SPIP - Contrib

SPIP - Contrib

[ar] [en] [es] [fr] [it]

85 visiteurs en ce moment

fontsizeup fontsizedown
[15 commentaires]

Calendrier des articles

jeudi 8 juillet 2004, par Olivier GENDRIN

0 vote

Il s’agit ici de lister les articles par année puis par mois de parution.

Remarque :

SPIP 1.8 propose une solution bien plus élégante pour faire la même chose, à l’aide du critère.

Ce critère est en outre très biene exploité pour faire un calendrier dans l’article Usage du filtre ’unique’ pour classer des articles.


La boucle que voici permet d’afficher tous les articles d’un site dans l’ordre chronologique et groupés par année puis par mois.

Et cela donne ceci


Cette boucle utilise :
- les critères communs à toutes les boucles
- la récursivité
- la gestion des dates
- une toute petite touche de syntaxe des boucles.


Vous pouvez utiliser cette boucle pour tous les objets de SPIP qui utilisent les dates, soit les articles, les brèves, les forums, les signatures.


Si le mois de publication d’un article n’est pas renseigné (non connu), l’article apparaîtra l’année précédente de son année de publication. Il y certainement moyen de remédier à celà par l’ajout de boucles conditonnelles...

Mais pour l’instant, ça ’buggue’ (gentillement).


Comment fonctionne cette boucle ?

La boucle plus_vieux permet de récupérer le plus vieil article de la base, d’en extraire son année de publication puis son mois de publication.

La boucle meme_mois récupére tous les articles publiés le même mois que l’article le plus vieux.

La boucle suivant_meme_annee récupére le plus vieil article restant dans la même année.

La boucle meme_mois_suivant_meme_annee est une boucle récursive qui à exactement le même effet que la boucle meme_mois.

La boucle recursive_mois permet de continuer à parcourir les articles publié la première année par récursivité.

la boucle recursive_annee permet de recommencer la manoeuvre pour l’année suivante, de manière récursive.


On peut limiter à certains articles et rubriques ou exclure certains articles et rubriques grâce aux mots-clé.

Retour en haut de la page

15 Messages de forum

Voir toute la discussion

Pages 1 | 2

  • Répondre à ce message

    19 mars 2007 06:00 , par Swearengen

    Salut et bravo pour la contrib !

    Je cherche à faire

    Année - Mois - Jour (date)- Rubrique - Articles

    Pour l’instant je m’arrache le cheveux sans y parvenir. Une idée ?

    Merci .

  • Répondre à ce message

    13 avril 2005 08:40 , par Olivier GENDRIN

    De la pagination dans chaque mois ? Oui c’est un peu compliqué pour le moment je pense...

    Mais de la pagination en bloc, oui, c’est facile, il suffit d’apliquer la contribution de James.

  • Répondre à ce message

    13 avril 2005 08:37 , par Olivier GENDRIN

    Ça doit être possible en excluant tous les articles qui ne t’intéressent pas à grands coups de doublons nommés.

  • Répondre à ce message

    13 avril 2005 08:31 , par Olivier GENDRIN

    Dans la doc sur les dates, ils parlent d’annee_relatif_redac, tu as essayé ?

  • Répondre à ce message

    31 mars 2005 20:45 , par fulvio

    Grandiose, merci.

    Par contre y aurait il une solution pour faire de la pagination ? Si les articles sont trop nombreux ca aurait été sympas... peut-être trop difficile à réaliser.

  • Répondre à ce message

    27 janvier 2005 13:48 , par indie

    Très belle contrib, qui demande une sacré connaissance de SPIP (boucles et récursivité sont à l’honneur).

    Un bel exemple est disponible ici même : http://www.spip-contrib.net/antichrono.php3

  • Répondre à ce message

    26 janvier 2005 15:32 , par tibo

    Presque ce que j’ai besoin : Est-il possible de limiter la liste à une branche complète et non pas à une rubrique ?

    J’ai essayé de remplacer id_rubrique par branche, le problème c’est qu’il n’affiche pas tout (il prend la branche du premier article trouvé qui n’est pas toujours la branche désirée). J’aimerai bien pouvoir le faire en SPIP pur sans code php.

    Voir en ligne : Un calendrier (mais en php)

  • Répondre à ce message

    10 décembre 2004 03:14

    en fait, il y a une erreur sur la boucle proposée pour la 1er année affichée...

    autant pour moi. Fabrice

  • Répondre à ce message

    10 décembre 2004 03:10 , par ^Fabrice^^

    code à base de balise titre (<h1>,<h2>, ...) et de liste

    + simplification grâce <B></B>

    <h1>Calendrier</h1>

    <BOUCLE_plus_vieux (ARTICLES) {par date} {0,1} {doublons}{inverse}>
      <h2>Année [<strong>(#DATE|annee)</strong>]</h2>
           
      <B_meme_mois>
         <h3>Mois de [<strong>(#DATE|nom_mois)</strong>]</h3>
         <ul>
            <li>[(#DATE|affdate)] - <a href="#URL_ARTICLE">[(#TITRE|couper{50})]</a></li>                                       
         <BOUCLE_meme_mois (ARTICLES) {par date} {mois_relatif=0} {doublons}{inverse}>
            <li>[(#DATE|affdate)] - <a href="#URL_ARTICLE">[(#TITRE|couper{50})]</a></li>
         </BOUCLE_meme_mois>       
         </ul>
         </B_meme_mois>

           
         <BOUCLE_suivant_meme_annee (ARTICLES) {par date} {annee_relatif=0} {doublons} {0,1}{inverse}>       

            <BOUCLE_meme_mois_suivant_meme_annee (boucle_meme_mois)>
            </BOUCLE_meme_mois_suivant_meme_annee>
                           
            <BOUCLE_recursive_mois (boucle_suivant_meme_annee)>
            </BOUCLE_recursive_mois>
         </BOUCLE_suivant_meme_annee>

         <BOUCLE_recursive_annee (boucle_plus_vieux)>
         </BOUCLE_recursive_annee>

    </BOUCLE_plus_vieux>

  • Répondre à ce message

    13 septembre 2004 09:30 , par Olivier GENDRIN

    Bien sûr ! Il suffit que tu ajoute dans toutes les boucles (ARTICLES) le critère {id_rubrique} et que tu encadre tout le code par une boucle (RUBRIQUES).

    Par exemple :

    <BOUCLE_rubriques (RUBRIQUES) {critères}>
     <BOUCLE_plus_vieux (ARTICLES) {id_rubrique} {par date} {0,1} {doublons}>
       Reste du code modifié par tes soins.
     </BOUCLE_plus_vieux>
    <BOUCLE_rubriques>

    La doc sur la boucle rubriques.

    D’autres questions ?

Pages 1 | 2

Répondre à cet article

Retour en haut de la page

Ça discute par ici