[5.0] Affichage des archives façon 4.3

PPmarcelPPmarcel Member
octobre 2010 modifié dans Modifications
Bonjour.

Avec l'arrivée de PluXml 5.0, nous avions eu le droit à un affichage des archives natif, dans la sidebar. Malheureusement, je trouve qu'on ne distingue plus très bien les années des mois. De plus, je n'aime pas l'idée de réduire une année de plublications en une seule ligne, j'ai l'impression de ne pas avoir travaillé.

Bref, je préfèrais l'affichage que l'on avait sous PluXml, à l'aide d'un petit hack.

Aujourd'hui je vous propose une petite modification qui va vous permettre re-obtenir l'agencement des archives en sidebar, à la façon de PluXml 4.3:

pluxml_archives.png

Dans la racine de PluXml, éditez core/lib/class.plx/show. nous aurons une fonction à insérer avant les derniers symboles:
}
?>
Insérez la fonction suivante:
/**
         * Méthode qui affiche la liste des archives comme sur la version 4.3 de PluXml
         *
         * @param       format  format du texte pour l'affichage (variable : #archives_id, #archives_status, #archives_nbart, #archives_url, #archives_name)
         * @return      stdout
         * @scope       global
         * @author      Stephane F
         **/
    public function archListOld($format='<dd id="#archives_id"><a class="#archives_status" href="#archives_url" title="#archives_name">#archives_name (#archives_nbart)</a></dd>'){
        $array = array();
        if($files = $this->plxMotor->plxGlob_arts->query('/^[0-9]{4}.[home|0-9,]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort',0,false,'before')) {
                foreach($files as $id => $filename){
                        if(preg_match('/([0-9]{4}).([home|0-9,]*).[0-9]{3}.([0-9]{4})([0-9]{2})([0-9]{6}).([a-z0-9-]+).xml$/',$filename,$capture)){
                                if(!isset($array[$capture[3]][$capture[4]])) $array[$capture[3]][$capture[4]]=1;
                                else $array[$capture[3]][$capture[4]]++;
                        }
                }
                foreach($array as $year => $data){
                                echo '<dl><dt><a href="?archives/'.$year.'">'.$year.'</a></dt>';
                                foreach($array[$year] as $month => $nbarts){
                                        $name = str_replace('#archives_id','archives-'.$year.$month,$format);
                                        $name = str_replace('#archives_name',plxDate::getCalendar('month', $month),$name);
                                        $name = str_replace('#archives_url', $this->plxMotor->urlRewrite('?archives/'.$year.'/'.$month), $name);
                                        $name = str_replace('#archives_nbart',$nbarts,$name);
                                        $name = str_replace('#archives_status',(($this->plxMotor->mode=="archives" AND $this->plxMotor->cible==$year.$month)?'active':'noactive'), $name);
                                        echo $name;
                                }
                                echo '</dl>';
                }
        }

   }
Puis dans votre thème/sidebar.php, remplacez l'affichage des archives par:
<h2>Archives</h2>
        <?php $plxShow->archListOld() ?>
Enfin, si vous voulez mettre en valeur les années de la liste (choix très subjectif), vous pouvez ajouter ceci au style.css:
#sidebar dt {
        font-weight: bold;
        font-size: 12px;
        }
Et voila, ça devrait marcher.
Merci bien à Stéphane qui corrigé les erreurs de la fonction.

Réponses

  • j'adhere !
    - juste une modif perso ,
    je suis repartit sur une liste imbriquée et titre h3 pour collé avec mes pratiques de codages .

    Merci.

    GC


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • Les dates en H3 sont une bonne idée. Je modifie ça.
  • StéphaneStéphane Member, Former PluXml Project Manager
    La liste de définition me semble plus appropriée pour ce genre d'affichage
    <dl>
       <dt>2010</dt>
       <dd>Septembre (10)</dd>
       <dt>2009</dt>
       <dd>Décembre (5)</dd>
       <dd>Novembre (2)</dd>
    </dl>
    
    Je ne vois pas l’intérêt, ni l'utilité de mettre une balise <h3> entre <dt>...</dt>, d'autant plus que je trouve que ça n'a pas sa place ici. Les balises h sont faites pour marquer des entêtes de sections/paragraphes, pas pour se retrouver dans des listes tel que c'est fait ici. Et puis il y a le css pour donner l'apparence voulue à la liste.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • +1 pour Stéphane, ce que w3c donne comme normalisation est vraiment à suivre autant que possible.
  • Bonjour,

    Pour les lien de navigation vers les "archives" , je considere ceux la comme secondaires,dans les liens de navigations internes du sites que l'on peut trouver sur la page .. et accessoirement comme des outils de recherche rapide , filtre ou "widget" .

    Je les cantonne dans une liste imbriquée ul ul . Le termes 'archives' est passé en titre h2 et les années en h3 .
    En codant la page en html5 . Je passe ceux-ci dans aside -> nav -> details Pour finalisé le role que je veux bien leur donner sur la page .(navigation secondaire repliable)


    en xhtml 1 , html 4.1 , je ne suis pas enclin a utilisé une liste de définition non plus , ça reste a mon sens une simple liste de lien et un widget , autant que la navigation par categorie ou une liste de mots clés .

    cordialement ,
    Cyrille


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • PPmarcelPPmarcel Member
    octobre 2010 modifié
    super_g2 a écrit:
    +1 pour Stéphane, ce que w3c donne comme normalisation est vraiment à suivre autant que possible.
    Très bien. En ce qui concerne la liste des définitions, elle bouge pas. En revanche j'ai supprimé les balises h3, et j'ai rajouté un élément décorateur dans le style.css pour coller à la normalisation:
    #sidebar dt {
            font-weight: bold;
            font-size: 12px;
            }
    
Connectez-vous ou Inscrivez-vous pour répondre.