SPIP - Contrib

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



Accueil du site > Outils pour squelettes > Squelettes selon contexte

Afficher les articles en entier ou en résumé selon leur nombre dans une rubrique

dimanche 22 octobre 2006, par erational. Dernier ajout dimanche 21 octobre 2007


Selon le contenu de rubrique, afficher les articles dans leurs intégralités (si 1 seul article dans la rubrique) ou leurs résumés (si plusieurs articles).

Cette boucle peut être donc pratique pour réaliser le squelette d’un site contenant beaucoup de sous-rubriques pas forcément très fournies.


SPIP n’affiche que les rubriques qui contiennent au moins un élément publié (soit un article, un site référencé ou une brève). Sur certains sites, il existe beaucoup de rubriques avec seul article. Cela ajoute beaucoup de clics à la navigation car il faut selectionner la rubrique puis l’article pour le visionner.

Une solution est de faire un affichage "alternatif" :
- la rubrique ne contient qu’un seul article, on l’affiche en entier
- la rubrique contient plus d’un article, on affiche une introduction avec le lien

Ce qui donne en code

Page rubrique.html

A l’intérieur de la boucle générale

<!-- rubrique: lister articles -->[(#REM)
 a t'on plus d'un article ds rubrique ?
 - si oui, on affiche l'article en entier
 - si non, on affiche les resumes
]<BOUCLE_plusUnArtDsRub(ARTICLES){id_rubrique}{par date}{1,n}>  </BOUCLE_plusUnArtDsRub>
    <BOUCLE_art_rub(ARTICLES){id_rubrique}{par date}{inverse}>
          <INCLURE{fond=inc/inc_article_resume}{id_article}>            
    </BOUCLE_art_rub>
</B_plusUnArtDsRub>
    <BOUCLE_artSeul(ARTICLES){id_rubrique}>
           <INCLURE{fond=inc/inc_article_entier}{id_article}>            
    </BOUCLE_artSeul>
<//B_plusUnArtDsRub>

Page inc/inc_article_resume.html

Code pour afficher les articles en "résumé" : on utilise #INTRODUCTION et on fait lien sur l’article complet avec #URL_ARTICLE

<BOUCLE_trouveArt(ARTICLES){id_article}>[<div class="surtitre">(#SURTITRE)</div>][
            <h2><a href="#URL_ARTICLE">(#TITRE|supprimer_numero)</a> </h2>][
             <div class="soustitre">(#SOUSTITRE)</div>]
             [(#INTRODUCTION)]              
             <a href="#URL_ARTICLE" class="suite"><:lire_article_seul:></a>              
</BOUCLE_trouveArt>

Page inc/inc_article_entier.html

Code pour afficher l’article en entier (pour simplifier il n’y a pas les documents, forums, pétitions liés à cet article)

<BOUCLE_trouveArt(ARTICLES){id_article}>        [<div class="surtitre">(#SURTITRE)</div>]      
       [<h1>(#TITRE|supprimer_numero)</h1>][
       <div class="soustitre">(#SOUSTITRE)</div>]
     
        [(#LOGO_ARTICLE|left||reduire_image{120,120})][
        <div class="chapo">(#CHAPO)</div>]        
        [(#TEXTE|opendocblank)][
        <div class="hypertxt"><strong>Lien hypertexte:</strong> <a href="#URL_SITE" class="spip_out">(#NOM_SITE)</a></div>]
        [<div class="ps">(#PS)</div>][
        <div class="note">(#NOTES)</div>]</BOUCLE_trouveArt>

Explication

- la boucle <BOUCLE_plusUnArtDsRub> utilise le paramètre 1,n est une boucle test. Elle ne renvoie rien et sert uniquement à savoir si on posséde plus de 1 article dans la rubrique

on peut la résumer par :

<BOUCLE_plusUnArtDsRub(ARTICLES){id_rubrique}{par date}{1,n}>  </BOUCLE_plusUnArtDsRub>
1 article</B_plusUnArtDsRub>
Plus de 1 article<//B_plusUnArtDsRub>

Référence : Syntaxe des boucles

- Ensuite dans chacune des branches, on va injecter le code pour afficher le prévisulisation de l’article ou l’article en entier en utilisant le INCLURE. Avec cette balise, il faut passer le chemin (l’endroit où l’on veut cherche le squelette) et les variables que l’on veut passer (ici la variable id_article

Ce qui donne : <INCLURE{fond=inc/inc_article_entier}{id_article}>

Référence : INCLURE d’autres squelettes

Compléments

A vous de compléter et de modifier les fichiers appelés par les INCLURE selon vos besoins avec les boucles documents, forums, pétitions, la pagination, ...

Alternative - Boucles similaires

Dans le même esprit et dans le cas de la réalisation d’un menu voir aussi Afficher directement l’article si la rubrique n’en a qu’un


Répondre à cet article



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et vie SPIP-Contrib | SPIP | L'autre.net