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.
Commentaires Forum fermé