Lister les articles d'une catègorie
Bonjour à tous
j'ai découvert pluxml il y a quelque temps et ça m'a beaucoup plus.
Je suis entrain de faire un site mais, je veux modifier la navigation de pluxml. Je l'ai configuré afin qu'il affiche un article par page et j'ai transformé le menu vertical en un menu horizontal.
J'ai créé 5 catégories et je souhaite afficher la liste d'articles correspondante, après le choix de l'une d'entre elle, dans la colonne de gauche.
Est ce que c'est faisable?
j'ai déjà parcourus le forum et j'ai aperçu quelques méthodes seulement mon niveau est très faible en php.
J'aimerai ajouter une fonction dans le fichier functions.php afin de faire cela proprement.
Merci.
j'ai découvert pluxml il y a quelque temps et ça m'a beaucoup plus.
Je suis entrain de faire un site mais, je veux modifier la navigation de pluxml. Je l'ai configuré afin qu'il affiche un article par page et j'ai transformé le menu vertical en un menu horizontal.
J'ai créé 5 catégories et je souhaite afficher la liste d'articles correspondante, après le choix de l'une d'entre elle, dans la colonne de gauche.
Est ce que c'est faisable?
j'ai déjà parcourus le forum et j'ai aperçu quelques méthodes seulement mon niveau est très faible en php.
J'aimerai ajouter une fonction dans le fichier functions.php afin de faire cela proprement.
Merci.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
ok, en attendant, j'aimerai quand même essayer par moi même
J'ai déjà manipulé des documents .xml en .asp via le dom et je me demande si ici, c'est fait de la manière?
Sinon, ou puis je trouver des informations pour comprendre et pouvoir modifier le fichier function.php?
Merci bien.
Un bon site pour le php c'est le site du zero bien sûr et un bon site pour Pluxml Pluxml.org pardi!
1/2 heure bon ça va me prendre 2/3 jours alors ;-)
essaye avec ce code voir si ça marche, mais je garanti rien :
qui me renvoie l'erreur
"Fatal error: Call to undefined function: getmode()"
je vais aller faire un petit tour sur le site du zéro du coup car j'ai vraiment du mal à comprendre les subtilités de la syntaxe.
c'est mon frère qui a fait le code et vu que je ne comprend pas grand chose : pas d'explications
par contre, je me pose une question :
les fichier function.php et class.pluxml.php ont été modifiés. Est ce que je pourrais quand même effectuer des mises à jour?
edit : pour ceux qui veulent voir le résultat (choisir une catégorie le second menu apparaît au dessus de la syndication)
non et oui
une mise à jour risquerait d'écraser ces fichiers mais comme tu es sur la version classsique, elle n'est plus destinée à être mise à jour, le développement portant aujourd'hui sur la version blog (quand les commentaires sont désactivés, les fonctionnalités ressemblent à la version classique). et attention, la version blog beta3 (stable bien que beta) est en cours de réecriture complète.
donc à priori, tu es tranquille pour un moment.
Dans de nombreux fils, comme dans celui-là, les utilisateurs essaient de contourner élégamment l'absence de sous-catégories.
Le nouvelle version apportera t'elle plus de facilités pour la gestion des sous-catégories sur plusieurs niveaux ?
bonjour,j'ai pu voir la modif que tu as fait pour afficher les articles d'une catégorie et suis tres interessé. Pourrais tu me fournir les sources de tes modifs ?
j'utilises la version Pluxml-blog beta 3
merci par avance
A plus et que les algues soient avec vous ....
Je veux bien partager le code, seulement la version de pluxml utilisé est ancienne ce qui induit des risque de failles notamment une faille importante au niveau de l'accès à l'interface d'administration (d'après souvenir).
De mon avis, il ne faut surtout pas utiliser ce code (en tout cas pas avec l'ancienne version de pluxml - preview 0.3.1) mais si vous voulez jeter un oeil le voici :
classes modifiées : (fichier class.pluxml.php)
#######modification########
function getArticles($cat=''){
$array_file = array();
$array_article = array();
$mon_motif = '/^[0-9]{4}.'.$cat.'(.[a-z0-9-]*)*.xml$/';
$array_file = _glob($this->config,$mon_motif);
rsort($array_file);
for($i=0;$i<sizeof($array_file);$i++) {
$array_article[$i] = $this->parseArticle($array_file[$i]);
}
return $array_article;
}
#######modification########
function mode($force=''){
if($force=='syndic'){
$this->mode = 'syndic';
$this->motif = '/^[0-9]{4}.([0-9]{3}|home)(.[a-z0-9-]*)*.xml$/';
}
elseif(preg_match('/^([0-9]{3})\/([A-Z]*)/',$this->get,$capture)){
$this->mode = 'cat';
$this->motif = '/^[0-9]{4}.'.$capture.'(.[a-z0-9-]*)*.xml$/';
$this->arrayArticlesCat();
#######modification########
preg_match_all('#\b\/([a-z-_]*)\b#',$this->get,$capture2);
if ( empty($capture2)){
}else{
$this->motif = '/^[0-9]{4}.'.$capture.'.'.$capture2.'.xml$/';
$this->arrayFiles();
$this->arrayArticles();
}
#######modification########
}else{
$this->mode = 'home';
if(_glob($this->config,'/[0-9]{4}.home(.[a-z0-9-]*)*.xml$/')){
$this->motif = '/[0-9]{4}.home(.[a-z0-9-]*)*.xml$/';
}else{
$this->motif = '/[0-9]{4}.[0-9]{3}(.[a-z0-9-]*)*.xml$/';
}
}
}
fonctions modifiée (fichier functions.php) ajout d'un 'case' pour créer un menu à partir du titre des articles
#######modification########
case 'listarticle':
if($pluxml->mode =='cat') :
preg_match('/^([0-9]{3})\/([A-Z]*)/',$pluxml->get,$capture);
$mes_articles = $pluxml->getArticles($capture);
echo '<ul>';
for($i=0;$i<sizeof($mes_articles);$i++) {
$numero_art = $mes_articles[$i]+0;
echo '<li><a href="'.'?'.$capture.'/'.$pluxml->cat_used[$capture].'/'.$mes_articles[$i].'">'.$mes_articles[$i].'</a></li>';
}
echo '</ul>';
endif;
break;
#######modification########
et pour finir le template
<?php
# Copyright (c) 2006 Skyline-arts.com. All rights reserved.
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title><?php __('pagetitle'); ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="pluxml/templates/<?php echo $pluxml->style; ?>/style.css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="Rss" href="pluxml/rss.php" />
<link rel="alternate" type="application/atom+xml" title="Atom" href="pluxml/atom.php" />
</head>
<body>
<div id="centrage">
<div id="head">
<div id="evitement">
<a href="#contenu" title="Aller au contenu">Aller au contenu</a>
</div>
<h1><?php __('maintitle', 'link'); ?></h1>
<div id="menu_horizontal">
<?php __('catlist'); ?>
</div>
</div>
<div id="page">
<div id="menu_vertical">
<div id="categories">
<?php __('listarticle'); #######modification######## ?>
</div>
<div id="liens">
<h2>Syndication</h2>
<ul>
<li><?php __('rss'); ?></li>
<li><?php __('atom'); ?></li>
</ul>
</div>
</div>
<?php # En mode 'home' ou 'catégorie' # ?>
<?php if($pluxml->mode == 'home' || $pluxml->mode =='cat') : ?>
<div id="contenu">
<?php # Liste d'articles # ?>
<?php while($pluxml->loopArticles()):?>
<div class="post">
<h1 class="articletitle"><?php __('title'); ?></h1>
<?php __('chapo'); ?>
<p class="post-info"><?php __('date'); ?> | <?php __('categorie'); ?></p>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
<?php # Fin mode 'home'/'catégorie' # ?>
<div id="foot">
<p>Généré par <a href="http://pluxml.org">Pluxml</a> <?php __('version');?> en <?php __('chrono'); ?> | <a href="pluxml/admin/">Admin</a></p>
</div>
</div>
</div>
</body>
</html>
Encore une fois, adaptez ce code à une version récente de pluxml.
voilà, amusez vous bien. Je ne manquerai pas de tester la version 4 béta de pluxml .
à moins que cela soit possible avec $plxShow peut-être maintenant non ?
<h2>Plan</h2>
<?php while($plxShow->plxMotor->plxRecord_arts->loop()): # On boucle sur les articles ?>
<p><?php $plxShow->artTitle('link'); ?></p>
<?php endwhile; # Fin de la boucle sur les articles ?>
Ainsi lorsque l'on clique sur une catégorie, il liste l'ensemble des articles appartenant à cette catégorie.
Par contre, je n'arrive pas à obtenir cette liste lorsque l'on clique sur un article. Le fait d'être en mode "article" et non plus "categorie" semble de pas permettre cela. J'ai bien essayé d'intervenir dans le fichier class.plx.show.php (core/lib) en essayant de jouer sur les modes et les urls. Mais pour l'instant, je coince !
Est ce que quelqu'un a déjà fait cela ?
Ne pourrions-nous pas recréer une fonction équivalente à catlist dans class.plx.Show.php, artlist par exemple ?
J'ai fais des tentatives mais sans succès.
Merci
Je viens de rajouter le code nécessaire dans le wiki pour répondre à ta demande concernant l'affichage des articles par catégories dans une page statique:
http://wiki.pluxml.org/?page=Lister+tous+les+articles+par+cat%C3%A9gorie+dans+une+page+statique
En espérant que ça réponde à tes attentes
Stéphane
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
http://dent-devitalisee.ml/
Tout est bon, merci encore pour ce super petit CMS ultra léger. Ras le bol de la lourdeur de Wordpress !
Juste pour cette fonction que je trouve absolument nécessaire, pouvez-vous poster le code source pour la version actuelle ?
Tu peux utiliser le plugin MyAllArchive disponible ici: http://pluxopolis.net/myplugins
Voilà le genre d'affichage que tu peux obtenir: http://pluxopolis.net/allarchive (à voir avec les critères dispo sur l'écran de config du plugin)
ou si tu es un petit peu développeur en utilisant la fonction lastArticles
http://devzone.pluxml.org/index.php?page=plxShow-lastArtList
le paramètre cat_id permet de spécifier la catégorie à utiliser
Exemple:
Ici on listera les 10 derniers articles de la catégorie 1
Tu peux copier-coller le code ci-dessous dans une page statiqe
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Je viens de mettre le module allarchive en local, ça marche.
Juste un dernier truc, je voudrais que ça soit complètement dynamique (que ça s'applique même pour les catégories qui seront créées dans le futur).
Parce que, en fait, dans le site les articles font 3 kilomètres.
Il faudrait que la méthode $plxShow->catList renvoie une liste de titre seulement.
Tu peux voir ça sur le site (catégorie témoignages), c'est chiant : http://dent-devitalisee.ml/
De cette façon coté visiteur tu auras un lien "Lire la suite" qui te permettra d’accéder à l'article complet.
La page d'accueil sera moins chargée comme ça et moins longue
edit: tu peux aussi régler le nombre d'articles affichés par page (cf parametrage des catégories -> nb/articles par page)
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)