Calendrier des articles

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.

<BOUCLE_blog2(ARTICLES){par date}{inverse}>
    [<hr /><h1>(#DATE|annee|unique)</h1>]
        [<h2>(#DATE|affdate{'Y-m'}|unique|nom_mois)</h2>]
             <a href="#URL_ARTICLE">#TITRE</a><br />
</BOUCLE_blog2>

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.

<BOUCLE_plus_vieux (ARTICLES) {par date} {0,1} {doublons}>
<h6>Année [(#DATE|annee)]</h6>
Mois de [(#DATE|nom_mois)]<br>
- [(#DATE|affdate)] <a href="#URL_ARTICLE">#TITRE</a><br>

<BOUCLE_meme_mois (ARTICLES) {par date} {mois_relatif=0} {doublons}>
- [(#DATE|affdate)] <a href="#URL_ARTICLE">#TITRE</a><br>
</BOUCLE_meme_mois>

	<BOUCLE_suivant_meme_annee (ARTICLES) {par date} {annee_relatif=0} {doublons} {0,1}>
	<br>Mois de [(#DATE|nom_mois)]<br>
	- [(#DATE|affdate)] <a href="#URL_ARTICLE">#TITRE</a><br>

	<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>

<B_recursive_annee>
<hr>
<BOUCLE_recursive_annee (boucle_plus_vieux)>
</BOUCLE_recursive_annee>

</BOUCLE_plus_vieux> 

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é.

Discussion

8 discussions

  • Super merci

    Alex, le roi des calendriers en ligne

    Sur http://calendriere.com

    Répondre à ce message

  • 4

    Y a t il un moyen de trier ces articles par rubriques ? genre Rubrique Musique- Janvier- articles 1
    article 2

    • Olivier G.

      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 ?

    • 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.

    • Olivier G.

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

    • 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

  • 1

    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

  • 1

    j’ai testé avec date_redac, ça ne colle pas. Je suppose que les mois_relatif et annee_relatif en sont la raison. J’ai essayé aussi que par année (sans les mois) mais je fais des nœuds dans les boucles récursives.

    En fait je cherchais à faire des #TOTAL_BOUCLE par #DATE_REDAC|annee. Ce n’est pas la bonne piste semble-t-il.

    Claude

    Répondre à ce message

  • 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

  • 1
    ^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>
    • 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

  • 1
    Vitaalis

    Ou je peux trouver la liste de toute les conditions des bocles ? Je cherche notemment comment trier la liste les articles par leur id ? genre par id ?
    merci

    Répondre à ce message

  • Génial, merci !

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom