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.

Réponses

  • ... ou a défaut un site qui me permettrai de comprendre comment fonctionnent ces fonctions.
  • DitiDiti Member
    Hum, c'est fort possible de le faire, mais j'attends la prochaine version de Pluxml, entièrement réécrite, avant de risquer quelque chose.
  • salut,
    Diti a écrit:
    Hum, c'est fort possible de le faire, mais j'attends la prochaine version de Pluxml, entièrement réécrite, avant de risquer quelque chose.
    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.
  • personne ne peut m'aider?
  • maramamarama Member
    il va falloir te pencher dans le code PHP alors mais bon ce que tu demandes peut se faire en 1/2 heure quand on connait un peu Pluxml et le PHP
    Un bon site pour le php c'est le site du zero bien sûr et un bon site pour Pluxml Pluxml.org pardi!
  • Ok, je suis aller voir sur le site du zéro seulement il n'y à pas grand chose sur le xml. Mais bon je vais quand même faire le tutoriel sur php, je pense que ça pourra m'aider.

    1/2 heure bon ça va me prendre 2/3 jours alors ;-)
  • Salut,
    essaye avec ce code voir si ça marche, mais je garanti rien ;) :
    <?php if($pluxml->mode =='cat') : ?>
    
    <?php # Liste d'articles # ?>
    <?php $pluxml->getMode('home', '/^[0-9]{4}.([0-9]{3}|home)(.[a-z0-9-]*)*.xml$/'); ?>
    <?php while($pluxml->result->loop()):?>
    <?php $num = $pluxml->result->f('file_num')+0; ?>
    <li><a href="<?php echo $pluxml->config['racine']; ?>?<?php echo $num; ?>-<?php echo $pluxml->result->f('art_name'); ?>"><?php echo $pluxml->result->f('title'); ?></a></li>
    <?php endwhile; ?>
    
    <?php endif; ?>
    
  • oh merci, j'ai essayé ton bout de code en l'insérant dans le template ou dans le fichier functions.php seulement, il ne semble guère apprécier cette ligne :
    $pluxml->getMode('home', '/^[0-9]{4}.([0-9]{3}|home)(.[a-z0-9-]*)*.xml$/');
    
    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.
  • Davdavdav, tu utilises quelle version de pluxml ?
  • salut, j'utilise pluxml0.3.1 en version classique.
  • apparemment je n'ai pas de fonction getmode? ; il me faut donc une autre solution
  • Ben, je te conseille de passer sur la version « blog » (qui ne va plus en être une dans quelque temps) en désactivant juste les commentaires :).
  • davdavdavdavdavdav Member
    août 2007 modifié
    bon j'ai finalement réussi à faire ce que je voulais ; si quelqu'un veux le code il suffit de demander.

    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)
  • >Est ce que je pourrais quand même effectuer des mises à jour?
    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.
  • ok, merci. :)
  • Bonjour et longue vie à ce CMS dont je suis devenu addict!
    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 ?
  • davdavdav:

    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
  • salut se serai sympa de poser le code dans le forum afin de voir de suite si l'on a pas quelque chose à apprendre ou à reutiliser

    A plus et que les algues soient avec vous ....
  • Au fait, juridiquement, si vous ne publiez pas les sources de votre programme, vous êtes dans l'illégalité et Skyline peut mettre en place des poursuites contre vous. C'est le principe de la GNU General Public Licence : si tu as accès aux autres, il faut que les autres aussi.
  • Suite à une demande, je répond ici. (désolé, je n'ai pas consulté le forum depuis un bail)

    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 :).
  • AndreaAndrea Member
    Est-ce que quelqu'un aurait eut la bonne idée d'adapter cela ;-) à la version 4 ?

    à moins que cela soit possible avec $plxShow peut-être maintenant non ?
  • Je teste Pluxml en version blog beta 4.1 depuis qq jours. Cette version permet d'afficher la liste des articles si tu ajoutes le code suivant dans ton fichier sidebar.php (themes/defaut) (par exemple après les lignes concernant la syndication)

    <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 ?
  • Bonjour, je suis sur la version Blog beta 4.1 et j'essaye de créer un menu déroulant sur 2 niveaux : Catégories, articles. si j'arrive à lister les catégories via la fonction catList je n'arrive pas à lister les articles. J'ai essayé d'utiliser la méthode de "Sacfretitidesmers" mais sans succès car je n'ai que le nom de l'article en cours qui apparait.
    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
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Rochmount

    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)

  • Salut je viens d'installer la version actuelle (5.3.1) pour faire un petit site d'un pote :

    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 ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour,

    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:
    <h3><?php $plxShow->lang('LATEST_ARTICLES'); ?></h3>
    <ul><?php $plxShow->lastArtList('<li><a class="#art_status" href="#art_url" title="#art_title">#art_title</a></li>', 10, 1); ?></ul>
    

    Ici on listera les 10 derniers articles de la catégorie 1

    Tu peux copier-coller le code ci-dessous dans une page statiqe
    <?php $plxShow = plxShow::getInstance() ?>
    <h3><?php $plxShow->lang('LATEST_ARTICLES'); ?></h3>
    <ul><?php $plxShow->lastArtList('<li><a class="#art_status" href="#art_url" title="#art_title">#art_title</a></li>', 10, 1); ?></ul>
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • abda11ahabda11ah Member
    février 2015 modifié
    Merci c'est cool

    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/
  • StéphaneStéphane Member, Former PluXml Project Manager
    Quand tu rédiges tes articles, utilise le chapeau pour mettre le début de l'article et la suite écrit la dans la partie contenu.
    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)

  • Merci je l'avais pâ vu le châpô :D
  • C'est vrai qu'on ne le voit pas du premier coup d’œil. Peut-être que ce sera amélioré dans la prochaine version ?
Connectez-vous ou Inscrivez-vous pour répondre.