Page rubrique : affichage intégral des articles solitaires

dimanche 8 janvier 2006
par  _Sylvain_
popularité : 3%

A propos

- compatiblité

  • version de SPIP : 1.8.2
  • version de Sarka-SPIP : 1.1.2

- Fichiers ou dossiers à créer

  • aucun

- Fichiers ou dossiers à modifier

  • rubrique.html

Objectif

Fabien, qui utilise Sarka-SPIP pour son site (Voxfabiani), s’est demandé s’il était possible d’afficher intégralement un article depuis la page rubrique lorsqu’il est seul dans cette rubrique :

Une petite interrogation reste cependant : je vais sans doute apporter des modifications à ce nouveau squelette, notamment pour l’affichage des articles : le principe est d’afficher intégralement un article qui est seul au sein d’une rubrique et de garder l’affichage de type "résumé" lorsque la rubrique comporte plusieurs articles.

La réponse est oui, évidemment... mais comment ?

Mise en oeuvre

Fabien, toujours lui, a trouvé un morceau de code bien fichu, développé par Jacques PYRAT pour que les liens d’un menu de rubriques pointent vers l’article de la rubrique s’il est solitaire. Lire à ce sujet la contrib Afficher directement l’article si la rubrique n’en a qu’un. Nous utiliserons la structure suivante, extraite de ce code, pour déterminer s’il existe un seul ou plusieurs articles dans une rubrique :

<BOUCLE_articles_plusdun(ARTICLES) {id_rubrique} {1,1}>
  [truc à afficher si plus d'un article]
</BOUCLE_articles_plusdun>
  <BOUCLE_articles_unseul(ARTICLES) {id_rubrique} {0,1}>
     [truc à afficher si un seul article]
  </BOUCLE_articles_unseul>
  <//B_articles_unseul>
     [truc à afficher si aucun article]
<//B_articles_plusdun>

En fonction des résultats du test :

  • si plusieurs articles : afficher les résumés des articles de la rubrique,
  • si un seul article : afficher intégralement l’unique article
  • si pas d’article : afficher les sites référencés (après vérification de l’absence de rubriques filles).

Le code (intégral) du fichier rubrique.html est donc le suivant :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<BOUCLE_rubrique_principal(RUBRIQUES) {id_rubrique}>

<html lang="#LANG">

<INCLURE(inclusions/header.php3){id_rubrique}>

<body dir="#LANG_DIR">

<div id="conteneur">

<INCLURE(inclusions/bandeau.php3)>

<INCLURE(inclusions/bande-chemin.php3){id_rubrique}>

<INCLURE(inclusions/bloc-gauche.php3){id_rubrique}>

[(#NOOP) <!-- ================================== BLOC DE DROITE  ================================== --> ]

<div id="droite" class="droite">

<!-- affichage des mots-clés associés à la rubrique-->

<B_mots>
        <div id="mots-cles-rubrique" class="mots-cles">
                <div id="mots_clefs"><a class="en-tete" href="mot.php3"><:mots_clefs:></a></div>
                <div class="contenu">
                        <BOUCLE_mots(MOTS) {id_rubrique} {type!==^squelette\_} {par id_groupe}>
                                <BOUCLE_groupe(GROUPES_MOTS){id_groupe}>
                                        [<div class="nom-groupe">(#TITRE) :</div>]
                                </BOUCLE_groupe>
                                <a href="#URL_MOT" [title="(#DESCRIPTIF|textebrut|entites_html)"]>#TITRE</a>
                        </BOUCLE_mots>
                </div>
        </div>
</B_mots>

<!-- affichage des dernières brèves et derniers sites publiés dans le "secteur" -->

<INCLURE(inclusions/bloc-droite-secteur-news.php3){id_secteur}>

</div>

[(#NOOP) <!-- ================================== BLOC CENTRAL  ================================== --> ]

<div id="centre" class="centre">
<div class="contenu">

        <div class="rubrique">
                [<div class=image>(#LOGO_RUBRIQUE||reduire_image{110})</div>]
                [<a class="titre">(#TITRE|supprimer_numero)</a>]
                [<div class="descriptif">(#DESCRIPTIF)</div>]

                <div class="texte">[(#TEXTE|reduire_image{200,x})]</div>

                <!-- Liens vers les rubriques filles -->

                <B_rubriques_filles>
                        <div class="filles">
                                <BOUCLE_rubriques_filles(RUBRIQUES){id_parent}{par num titre}{par titre}>
                                        [<a href="#URL_RUBRIQUE">(#TITRE|supprimer_numero)</a>]
                                </BOUCLE_rubriques_filles>
                        </div>
                </B_rubriques_filles>

                <!-- Liens vers les documents joints -->

                <B_documents_rubrique>
                        <div class="doc">
                                <div id="docu_rubrique" class="en-tete">
                                        <:docu_rubrique:> :
                                </div>
                                <!-- Liens vers les documents joints, à l'exclusion des images -->
                                <BOUCLE_documents_rubrique(DOCUMENTS){id_rubrique}{extension !== jpg|png|gif}{mode=document}{doublons}>
                                        <a href=#URL_DOCUMENT>#LOGO_DOCUMENT  #TITRE </a>
                                </BOUCLE_documents_rubrique>
                        </div>
                </B_documents_rubrique>

                <!-- Liens vers les images jointes -->

                <B_images_rubrique>
                        <div class="images">
                                <div id="img_rubrique" class="en-tete">
                                        <:img_rubrique:> :
                                </div>
                                <BOUCLE_images_rubrique(DOCUMENTS){id_rubrique}{extension == jpg|png|gif}{mode=document}{doublons}>
                                        <div class="vignette">
                                                <a href=#URL_DOCUMENT target="blank" class="info"> #LOGO_DOCUMENT [<span>(#DESCRIPTIF)</span>]</a>
                                                <ul>
                                                        [<li><:img_titre:> : (#TITRE)</li>]
                                                        <li><:img_taille:> : #LARGEUR par #HAUTEUR</li>
                                                        <li><:img_poids:> : [(#TAILLE|taille_en_octets)]</li>
                                                        <li><:img_format:> : #TYPE_DOCUMENT</li>
                                                </ul>
                                        </div>
                                <div class="clear"><span></span></div>
                                </BOUCLE_images_rubrique>
                        </div>
                </B_images_rubrique>
        </div>

        <!-- Articles de la rubrique : intégral, si un seul article ; résumés si plusieurs articles -->

        <BOUCLE_articles_plusdun(ARTICLES) {id_rubrique} {1,1}>
        <!-- plusieurs articles : affichage résumé -->
       
                <B_test_numero>
       
                        <BOUCLE_test_numero(ARTICLES){id_rubrique}{titre==^[0-9]+\.}{0,1}>
       
                                <B_article-numerotes>
                                        <div class="derniers-articles">
                                                <div id="articles_rubrique" class="en-tete"><:article_rubrique:></div>
                                                <BOUCLE_article-numerotes(ARTICLES) {id_rubrique}{par num titre}>
                                                        <div class="annonce">
                                                                [<div class=image>(#LOGO_ARTICLE||reduire_image{150})</div>]
                                                                <div class="detail">[(#DATE|nom_jour)] [(#DATE|affdate)]<br>
                                                                <B_auteurs-article-numerotes>
                                                                        <:par_auteur:>
                                                                        <BOUCLE_auteurs-article-numerotes(AUTEURS) {id_article} {", "}>
                                                                                <a href="#URL_AUTEUR">#NOM</a>
                                                                        </BOUCLE_auteurs-article-numerotes>
                                                                </B_auteurs-article-numerotes>
                                                                </div>
                                                                [<div class="surtitre">(#SURTITRE)</div>]
                                                                [<a class="titre" href="#URL_ARTICLE" title="<:lire_suite_article:>">(#TITRE|supprimer_numero)</a>]
                                                                [<div class="soustitre">(#SOUSTITRE)</div>]
                                                                <div class="introduction">
                                                                        #INTRODUCTION
                                                                        <br><br>
                                                                        <a class="suite" href="#URL_ARTICLE"><:lire_suite_article:></a>
                                                                </div>
                                                        </div>
                                                </BOUCLE_article-numerotes>
                                        </div>
                                </B_article-numerotes>
       
                        </BOUCLE_test_numero>
       
                </B_test_numero>
       
                                <B_article-dates>
                                        <div class="derniers-articles">
                                                <div id="article_rubrique" class="en-tete"><:article_rubrique:></div>
                                                <BOUCLE_article-dates(ARTICLES) {id_rubrique}{par date}{inverse}>
                                                        <div class="annonce">
                                                                [<div class=image>(#LOGO_ARTICLE||reduire_image{150})</div>]
                                                                <div class="detail">[(#DATE|nom_jour)] [(#DATE|affdate)]<br>
                                                                        <B_auteurs-article-date>
                                                                                <:par_auteur:>
                                                                                <BOUCLE_auteurs-article-date(AUTEURS) {id_article} {", "}>
                                                                                        <a href="#URL_AUTEUR">#NOM</a>
                                                                                </BOUCLE_auteurs-article-date>
                                                                        </B_auteurs-article-date>
                                                                </div>
                                                                [<div class="surtitre">(#SURTITRE)</div>]
                                                                [<a class="titre" href="#URL_ARTICLE" title="<:lire_suite_article:>">(#TITRE|supprimer_numero)</a>]
                                                                [<div class="soustitre">(#SOUSTITRE)</div>]
                                                                <div class="introduction">
                                                                        #INTRODUCTION
                                                                        <br><br>
                                                                        <a class="suite" href="#URL_ARTICLE"><:lire_suite_article:></a>
                                                                </div>
                                                        </div>
                                                </BOUCLE_article-dates>
                                        </div>
                                </B_article-dates>
                         <//B_article-dates>
                <//B_test_numero>

        </BOUCLE_articles_plusdun>

                <BOUCLE_articles_unseul(ARTICLES) {id_rubrique} {0,1}>
            <!-- un seul article : affichage intégral -->

                        </div>
                        <div class="contenu">
                       
                        <!-- Contenu : article -->
                       
                                <div class="article">
                                        <a class="imprimer" href="imprimer.php3?id_article=#ID_ARTICLE" title="<:imprimer_article:>" alt="<:imprimer_article:>" target="_blank"></a>
                                        [<div class="surtitre">(#SURTITRE)</div>]
                                        [<div class="titre">(#TITRE|supprimer_numero)</div>]
                                        [<div class="soustitre">(#SOUSTITRE)</div>]
                               
                                        <div class="contenu">
                                                [<div class=image>(#LOGO_ARTICLE||reduire_image{150})</div>]
                                                <div class="detail">[(#DATE|nom_jour)] [(#DATE|affdate)]<br>
                                                <B_auteurs-article>
                                                        <:par_auteur:>
                                                        <BOUCLE_auteurs-article(AUTEURS) {id_article} {", "}>
                                                                <a href="#URL_AUTEUR">#NOM</a>
                                                        </BOUCLE_auteurs-article>
                                                </B_auteurs-article>
                                        </div>
                               
                                        [<div class=chapo><:sur_web:> <a href=#URL_SITE>(#NOM_SITE)</a></div>]
                                        [<div class=chapo>(#CHAPO)</div>]
                               
                                        <div class="texte">
                                                [(#TEXTE|reduire_image{200,0})]
                                                [<div class=post-scriptum><div class="annonce"><:ps:> :</div>(#PS)</div>]
                                                [<div class="notes">(#NOTES)</div>]
                                                [<br><a class="repondre" href="forum.php3?(#PARAMETRES_FORUM)"><:repondre_article:></a><br>]
                                        </div>
                                </div>
                       
                        <!-- Liens vers les documents joints, à l'exclusion des images -->
                       
                                <B_documents_article>
                                        <div id="docu_article" class="en-tete"><:docu_article:> :</div>
                                        <div class="doc">
                                                <BOUCLE_documents_article(DOCUMENTS){id_article}{extension !== jpg|png|gif}{mode=document}{doublons}>
                                                        <a href=#URL_DOCUMENT> #LOGO_DOCUMENT  #TITRE </a>
                                                </BOUCLE_documents_article>
                                        </div>
                                        <div class="clear"><span></span></div>
                                </B_documents_article>

                        <!-- Liens vers les images jointes -->
                       
                                <B_images_article>
                                        <div id="img_article" class="en-tete"><:img_article:> :</div>
                                                <div class="images">
                                        <BOUCLE_images_article(DOCUMENTS){id_article}{extension == jpg|png|gif}{mode=document}{doublons}>
                                                        <div class="vignette">
                                                                <a href=#URL_DOCUMENT target="_blank" class="info"> #LOGO_DOCUMENT [<span>(#DESCRIPTIF)</span>]</a>
                                                                <ul>
                                                                        [<li><:img_titre:> : (#TITRE)</li>]
                                                                        <li><:img_taille:> : #LARGEUR par #HAUTEUR</li>
                                                                        <li><:img_poids:> : [(#TAILLE|taille_en_octets)]</li>
                                                                        <li><:img_format:> : #TYPE_DOCUMENT</li>
                                                                </ul>
                                                        </div>
                                        </BOUCLE_images_article>
                                                </div>
                                        <div class="clear"><span></span></div>
                                </B_images_article>
                       
                        </div>
               
                <!-- Formulaire pour signer la pétition -->
               
                        [<div class="petition">
                                <div id="signer_petition" class="en-tete"><:signer_petition:></div>
                                (#FORMULAIRE_SIGNATURE)
                        </div>]
               
                <!-- Signatures petition -->
               
                        <B_signatures>
                                <BOUCLE_signatures_decompte(SIGNATURES) {id_article}></BOUCLE_signatures_decompte>
                                [<div class="signatures">
                                        <div id="signatures_petitions" class="en-tete"><:signatures_petition:>: (#TOTAL_BOUCLE)</div>
                       
                                        <table>
                                                <thead>
                                                        <tr>
                                                                <td><:date:></td>
                                                                <td><:nom:></td>
                                                                <td><:sites_web:></td>
                                                                <td><:message:></td>
                                                        </tr>
                                                </thead>
                                                <tbody>]
                                <//B_signatures_decompte>
                                                <BOUCLE_signatures(SIGNATURES) {id_article} {par date} {inverse} {0,30}>
                                                        <tr>
                                                                <td class="signature-date">[(#DATE|affdate_court)]</td>
                                                                <td class="signature-nom">#NOM</td>
                                                                <td class="signature-url"><a href="#URL_SITE">[(#NOM_SITE)]</a></td>
                                                                [<td class="signature-message">(#MESSAGE)</td>]
                                                        </tr>
                                                </BOUCLE_signatures>
                                                </tbody>
                                        </table>
                                </div>
                        </B_signatures>

                </BOUCLE_articles_unseul>
               
                <!-- aucun article : test de l'existence de rubriques filles (si test négatif, affichage des sites référencés) -->
       
                        <!-- test de l'existence de rubriques filles -->
                        <B_test-pas-de-rubrique-fille>
                                <BOUCLE_test-pas-de-rubrique-fille(RUBRIQUES){id_parent}{0,1}>
                                </BOUCLE_test-pas-de-rubrique-fille>
                        </B_test-pas-de-rubrique-fille>

                </div>
                        <div class="plan">
                        <!-- si articles syndiqués dans la rubrique, affichage des plus récents, tout site confondu -->
                                <BOUCLE_test-syndic(SYNDIC_ARTICLES) {id_rubrique} {0,1}>
                                        <div id="recents_syndic" class="intitule"><:recents_syndic:> :</div>
                                        <B_syndic-nouveaux>
                                                <ul>
                                                        <BOUCLE_syndic-nouveaux(SYNDIC_ARTICLES) {id_rubrique}{par date}{inverse}{0,10}>
                                                                <li><a class="article-syndic" href="#URL_ARTICLE"><span class="date-syndic">[[(#DATE|affdate{'d-m-Y'})]]</span> [(#TITRE|couper{75})]</a></li>
                                                                <div class="a-propos">
                                                                        [<:publie_sur_site:> <span class="site-pere">(#NOM_SITE)</span>]
                                                                        [<:par_auteur:> <span class="auteur-pere">(#LESAUTEURS)</span>.]<br>
                                                                        [<span class="commentaire">(#DESCRIPTIF|supprimer_tags)</span>]
                                                                </div>
                                                        </BOUCLE_syndic-nouveaux>
                                                </ul>
                                        </B_syndic-nouveaux>
                                        <br>
                                </BOUCLE_test-syndic>
                        <!-- affichage des sites référencés de la rubrique -->
                                <B_site-secteur>
                                <div class="intitule"><:icone_sites_references:> :</div>
                                        <div class="indentation redimensionnement">
                                                <div class="web">
                                                        <BOUCLE_site-secteur(SITES){id_rubrique}{par date}{inverse}>
                                                                <div class=site>
                                                                        <a class="nom-site" href="#URL_SITE">#NOM_SITE</a>
                                                                        [<div class="descriptif">(#DESCRIPTIF)</div>]
                                                                <!-- si articles syndiqués dans le site, affichage des plus récents -->
                                                                        <B_syndic-recherche1>
                                                                                <BOUCLE_syndic-recherche1(SYNDIC_ARTICLES) {id_syndic}{par date}{inverse}{0,20}>
                                                                                        [<a class="article-synd info" href="#URL_ARTICLE">(#TITRE*|supprimer_numero)<span>[(#DATE|nom_jour)] [(#DATE|jour)] [(#DATE|nom_mois)]</span></a>]
                                                                                </BOUCLE_syndic-recherche1>
                                                                        </B_syndic-recherche1>
                                                                </div>
                                                                <br>
                                                        </BOUCLE_site-secteur>
                                                </div>
                                        </div>
                                </B_site-secteur>

                        </div>

                        <//B_test-pas-de-rubrique-fille>
               
                <//B_articles_unseul>

        <//B_articles_plusdun>



</div>
</div>
<INCLURE(inclusions/footer.php3)>
</div>

<!-- pour rajouter des trucs -- à la CSSZengarden -->
<div id="extraDiv1"><span></span></div><div id="extraDiv2"><span></span></div><div id="extraDiv3"><span></span></div>
<div id="extraDiv4"><span></span></div><div id="extraDiv5"><span></span></div><div id="extraDiv6"><span></span></div>

</body>
</html>

</BOUCLE_rubrique_principal>
<INCLURE(inclusions/404.php3)>
<//B_rubrique_principal>

Si vous souhaitez utiliser cette fonctionnalité dans la version 1.1.2 de sarka-SPIP, vous pouvez télécharger le fichier rubrique.html modifié en pièce jointe, et le charger dans le répertoire /squelettes en écrasant le fichier standard.


Documents joints

Télécharger le fichier rubrique.html modifié
Télécharger le fichier rubrique.html modifié

Commentaires  forum ferme

Logo de jeanpaul
Page rubrique : affichage intégral des articles solitaires
mardi 7 octobre 2008 à 12h23 - par  jeanpaul

Bonjour,
bien vu pour le code... je vais le tester sous peu.

Je me pose la question du "Comment afficher intégralement le premier article d’une rubrique dès que l’on clique sur une rubrique ?"

une idée ?

Page rubrique : affichage intégral des articles solitaires
jeudi 20 décembre 2007 à 15h46

Bonjour,

est-il possible d’adapter cette contrib déjà ancienne à la version plugin du squelette ?
J’ai commencé à comparer le code des deux "rubrique.html" mais je voudrais savoir si vous pensez qu’il peut y avoir des incompatibilités ?

Merci de m’éclairer...

Site web : Voir ici
vendredi 21 décembre 2007 à 20h58 - par  smarkar

Merci beaucoup Pascal, je pensais pourtant avoir bien cherché dans les forums...

Je vais essayer de mettre ça en pratique. Dans la foulée, et toujours pour améliorer la navigation en réduisant le nombre de clics, est-ce qu’il est possible de faire en sorte qu’un article contenant moins de 600 caractères (ou tout autre valeur définie dans le squelette) s’affiche directement en entier ?

Bonne soirée.

Logo de smarkar
jeudi 20 décembre 2007 à 21h41 - par  NoNosS (Pascal)

Bonjour,

Une solution possible a été traitée dans ce forum
Cette solution ne présente aucun "effet secondaire" connu :)

Pascal

Page rubrique : affichage intégral des articles solitaires
vendredi 19 mai 2006 à 16h13

Bonjour,

je vous contacte une fois de plus pour un petit soucis : pour les articles solitaires s’affichant intégralement, les forums (réponses aux articles) ne s’affichent pas !

Avez-vous déjà rencontré ce problème ? Comment le corriger ?

PS : j’ai eu beaucoup de compliments pour mon site : merci beaucoup Sylvain !! Je ne connais pas San au Mali, mais peut-être lors de mon prochain voyage !

samedi 25 octobre 2008 à 14h06 - par  _Eric_

Ma config : spip 1.9.2e
sarka 2.0.2

j’ai modifié le fichier rubrique.html comme suit et ça marche.

apres :
<div id="centre" class="centre">

j’ai ajouté :

<BOUCLE_deux(ARTICLES){id_rubrique}{1,1}>
   <BOUCLE_sommaire(ARTICLES){id_rubrique}{par date}{inverse}>
   </BOUCLE_sommaire>
</BOUCLE_deux>
   <BOUCLE_unseul(ARTICLES){id_rubrique}>
       <div class="derniers-articles">
           <div id="article_rubrique" class="en-tete">#TITRE</div>
           <div class="annonce">#TEXTE</div>
       </div>
   </BOUCLE_unseul>
<//B_deux>
Logo de _Eric_
jeudi 28 juin 2007 à 04h09 - par  cdseo

Bonjour,

Ce serait possible d’avoir les fichiers pret-modifier pour ceux qui n’on rien toucher au skin ?

Site web : 四川旅游
Page rubrique : affichage intégral des articles solitaires
dimanche 19 mars 2006 à 16h10 - par  ounet

Bonjour à tous,

bravo tout d’abord pour ce superbe squelette que j’essaie d’apprivoiser pour le site de mon collège.

Voilà mon "problème" : j’utilise en même temps l’affichage intégral des articles et le menu dynamique. Or sur une page n’affichant qu’un seul article, les sous-rubriques du menu n’apparaissent pas. Est-ce normal ? Si oui, que faudrait-il faire pour réafficher les sous-rubriques du menu si on le désire ?

Merci d’avance.

lundi 20 mars 2006 à 17h54 - par  jicew

Bonjour,
Il me semble que pour qu’une rubrique ou une sous rubrique apparaisse il faut qu’elle contienne au moins un article.
@+

Les articles "solitaires" sont désormais moins "perdus" !
lundi 9 janvier 2006 à 17h10 - par  Fabien

B’jour tout le monde,

Même si j’ai déjà répondu par une autre voie à ce message, je tiens à remercier encore une fois Sylvain pour son aide fabuleuse : il n’y a pas à dire, c’était exactement cela que je cherchais... et Sylvain l’a fait !

Merci !

Site web : VoxFabiani
mardi 21 février 2006 à 15h15

Bonjour à tous,

j’ai téléchargé ce script génial mais il ne correspond pas exactement à ce que je voulais (je voulais simplement que l’article soit déroulé en entier mais en conservant la mise en page standard)

Mon problème est qu’en remettant le fichier rubrique.html standard, la fonctionnalité reste pour 2 rubriques.

D’ou ma qestion : quels fichiers sont modifiés par le scipt et comment tout remettre en place ?

Merci de votre aide.