Afficher directement l’article lorsque celui-ci est seul dans une rubrique (mini-variante)

All contributions published for previous SPIP versions

Il s’agit une variante de la boucle proposée par jpyrat qui est là.

Mon pb c’était de ne pas placer les boucles dans le menu (coolmenu), car celui-ci était déjà tout plein de truandages et je m’y perdais.

Alors voilà :

  1. Renommer le fichier rubrique.html en rubrique-normale.html, et lui créer son fichier siamois rubrique-normale.php3 avec $fond = “rubrique-normale”;
  2. Faire un fichier rubrique.html qui contient ça :
<BOUCLE_principale(RUBRIQUES) {id_rubrique} >

<BOUCLE_articles_plusdun(ARTICLES) {id_rubrique} {1,1}>  <INCLURE(rubrique-normal.php3){id_rubrique}>
 </BOUCLE_articles_plusdun>

<BOUCLE_articles_unseul(ARTICLES) {id_rubrique} {0,1}>
          <INCLURE(article.php3){id_article}>
          </BOUCLE_articles_unseul>
<//B_articles_unseul>
<//B_articles_plusdun>

</BOUCLE_principale>
<INCLURE(page-404.php3)>
<//B_principale>

Et c’est tout : mon menu (menu déroulant) reste le même qu’avant, ce qui m’arrange fort...

Amicalement,
Dominique

updated on 6 December 2006

Discussion

13 discussions

  • Bonjour,

    Bravo pour cette contrib.
    Nous avons réussi à la mettre en place sur l’un de nos sites.
    Cependant nous aimerions l’implémenter sur un site avec des rubriques et des sous rubriques, et là nous avons un problème d’affichage.

    • cela ne prend pas en compte le .css de la page appelée
    • on a créé un nouvel habillage rien que pour le nouveau squelette(rubrique-normale), mais cela fonctionne mal.

    Extrait du code, page équivalente à rubrique.html

    <BOUCLE_principale(RUBRIQUES) {id_rubrique} >
    <html dir="#LANG_DIR" lang="#LANG">
    
    <!-- Ceci est la feuille de style par defaut pour les types internes a SPIP -->
    <link rel="stylesheet" href="spip_style.css" type="text/css" />
    
    <!-- Les feuilles de style specifiques aux presents squelettes -->
    <link rel="stylesheet" href="#DOSSIER_SQUELETTE/typographie.css" type="text/css" />
    
    <!-- media="..." permet de ne pas utiliser ce style sous Netscape 4 (sinon plantage) -->
    <link rel="stylesheet" href="#DOSSIER_SQUELETTE/habillage.css" type="text/css" media="projection, screen, tv" />
    <!-- media="print" permet d'utiliser cette feuille de style quand vous imprimez depuis votre navigateur -->
    <link rel="stylesheet" href="#DOSSIER_SQUELETTE/impression.css" type="text/css" media="print" />
    
    <?php $letexte = '[(#TEXTE|texte_script)]';
            $letitre='[(#TITRE|texte_script|supprimer_numero)]';
     ?>
     
    <B_articles_plusdun>
    <BOUCLE_articles_plusdun(ARTICLES) {id_rubrique} {1,1}>  
    <div class="contenu" id="principal">
    <div class="cartouche">
            <h4 class="titre-texte"><? echo $letitre; ?></h4>
    </div>
    <div class="chapo">
    <? echo $letexte; ?>
    </div>
    </div>
    <INCLURE(rubrique-2-un.php3){id_rubrique}>
    </BOUCLE_articles_plusdun>
    </B_articles_plusdun>
    <B_articles_unseul>
    <BOUCLE_articles_unseul(ARTICLES) {id_rubrique} {0,1}>
    <INCLURE(article.php3){id_article}>
    </BOUCLE_articles_unseul>
    </B_articles_unseul>
    <div class="contenu" id="principal">
    <div class="cartouche">
            <h4 class="titre-texte"><? echo $letitre; ?></h4>
    </div>
    <div class="chapo">
    <? echo $letexte; ?>
    </div>
    </div>
    <INCLURE(rubrique-2-un.php3){id_rubrique}>
    
    <//B_articles_unseul>
    <//B_articles_plusdun>
    </html>
    </BOUCLE_principale>
    
    <//B_principale>

    Extrait du code, page équivalente à rubrique-normale.html

    <INCLURE(bandeau.php3)>
    
    <title>[(#TITRE|supprimer_numero|textebrut)]</title>
    
    
    
    
    
    <!--------------------------- Menu Rubrique général contextuel - Chauffage et commun et plan ------------------------------->
    
    <div id="navigation">
    <h1 class="structure"><:navigation:></h1>
    
    
    <!-- Menu de navigation general -->
    
    <a href=rubrique.php3?id_rubrique=2>
            <center>
                    <img src="./IMG/commun/logo_rubrique1.jpg" width="144" height="80" border="0" />
            </center>
    </a>
    
    <center>
            <font color=#ff0000> 
                    &#8226 Chauffage &#8226 
            </font>
    </center>
    
    <!-- barre fixe blanche -->
    <div class="menu">
            <ul classe="fixe">
            </ul>
    </div>
    
    <center><img src="./IMG/commun/carapace-ccc-center.jpg" width="144" height="20" border="0" />
    </center>
    
    <!-- barre fixe blanche -->
    <div class="menu">
    <ul classe="fixe">
    </ul>
    </div>
    
    
    <B_sous_rubriques1>
            <h2 class="structure"><:sous_rubriques:></h2>
    
            <div class="menu_deroulant">
                    <div class="menu_deroulant_left">
                            <INCLURE(menu2b.php3){id_rubrique}>
                    </div>
    
                    <!-- Sous-rubriques 
                            <BOUCLE_sous_rubriques1(RUBRIQUES) {id_parent=2} {par titre}>
                            <li>
                                    <div class="menu-titre">
                                            <a href="#URL_RUBRIQUE" [title="(#DESCRIPTIF|textebrut|entites_html)"]>[(#TITRE|supprimer_numero)]
                                            </a>
                                    </div>
                                    <B_sous_sous_rubriques1>
                                            <ul class="menu-liste">
                                                    <BOUCLE_sous_sous_rubriques1(RUBRIQUES) {id_parent} {par titre}>
                                                    <li class="menu-item">
                                                            <a href="#URL_RUBRIQUE" [title="(#DESCRIPTIF|textebrut|entites_html)"]>[(#TITRE|supprimer_numero)]
                                                            </a>
                                                    </li>
                                                    </BOUCLE_sous_sous_rubriques1>
                                            </ul>
                                    </B_sous_sous_rubriques1>
                            </li>
                            </BOUCLE_sous_rubriques1>
                    -->
            </div>
    </B_sous_rubriques1>
    
    <!-- barre fixe blanche -->
    <div class="menu">
            <ul classe="fixe">
            </ul>
    </div>
    
    <center>
            <img src="./IMG/commun/carapace-ccc-center.jpg" width="144" height="20" border="0" />
    </center>
    
    <!-- barre fixe blanche -->
    <div class="menu">
            <ul classe="fixe">
            </ul>
    </div>
    
    <!-- Menu de navigation partie commune -->
    
    <B_rubriques5>
            <div class="menu">
                    <ul class="commun">
                            <BOUCLE_rubriques5(RUBRIQUES) {id_parent=75} {par titre}>
                                    <li>
                                            <div class="menu-titre">
                                                    <a href="#URL_RUBRIQUE" [title="(#DESCRIPTIF|textebrut|entites_html)"]>[(#TITRE|supprimer_numero)]
                                                    </a>
                                            </div>
                                    </li>
                            </BOUCLE_rubriques5>
                    </ul>
            </div>
    </B_rubriques5>
    
    <!-- barre fixe blanche -->
    <div class="menu">
            <ul classe="fixe">
            </ul>
    </div>
    
    <center>
            <img src="./IMG/commun/carapace-ccc-center.jpg" width="144" height="20" border="0" />
    </center>
    
    <!-- barre fixe blanche -->
    <div class="menu">
            <ul classe="fixe">
            </ul>
    </div>
    
    <!-- Menu de navigation titre des parties -->
    
    <div class="menu">
    <ul class="general">
            <li class="menu-item">
                    <a href="plan.php3">
                            <:plan_site:>
                    </a>
            </li>
    </ul>
    </div>
    
    <!-- barre fixe blanche -->
    <div class="menu">
            <ul classe="fixe">
            </ul>
    </div>
    
    
    <div class="menu">
    <ol class="rubriques">
    <BOUCLE_hierarchie(RUBRIQUES) {racine} {par num titre} {titre >= 01}>
    <li>
    <div class="menu"><a href="#URL_RUBRIQUE" [title="(#DESCRIPTIF|textebrut|entites_html)"]>[(#TITRE|supprimer_numero)]</a></div>
    </li>
    </BOUCLE_hierarchie>
    </ol>
    </div>
    
    
    <!-- Breves dans la rubrique -->
    
    <B_breves_rubrique>
    
    <div class="menu">
            <div class="breves" title="<:dernieres_breves:>">
                    <div class="menu-titre">
                            <:breves:>
                    </div>
                    <ul>
                            <BOUCLE_breves_rubrique(BREVES) {id_secteur} {par date} {inverse} {0,5}>
                                    <li class="menu-item">
                                            <i>[(#DATE|affdate_court)]</i>:
                                                    <a href="#URL_BREVE">[(#TITRE|supprimer_numero)]
                                                    </a>
                                    </li>
                            </BOUCLE_breves_rubrique>
                    </ul>
            </div>
    </div>
    
    </B_breves_rubrique>
    
    
    <!-- Formulaire de recherche -->
    
    [(#FORMULAIRE_RECHERCHE)]
    
    
    <center><img src="./IMG/commun/carapace2.jpg" width="144" height="20" border="0" /></center>
    
    </div>
    
    
    
    
    <!-- Une - contenu de la rubrique -->
    
    <div class="contenu" id="principal">
    <br >
    <br >
    
    
    
    <div class="cartouche">
    [(#LOGO_RUBRIQUE|left)]
    <h1 class="titre-texte">[(#TITRE|supprimer_numero)]</h1>
    </div>
    
            <div class="encart">
    
            <!-- Menu de navigation mots-cles -->
    
            <B_mots>
            <h2 class="structure"><:mots_clefs:></h2>
    
            <div class="menu">
            <ul class="divers" title="<:mots_clefs:>">
            <BOUCLE_mots(MOTS) {id_rubrique} {par titre}>
            <li>
            <div class="menu-titre"><a href="#URL_MOT" [title="(#DESCRIPTIF|textebrut|entites_html)"]>[(#TITRE|supprimer_numero)]</a></div>
            <B_rubriques_mots>
                    <ul class="menu-liste">
            <BOUCLE_rubriques_mots(RUBRIQUES) {id_mot} {par hasard} {0,4}>
                    <li class="menu-item"><a href="#URL_RUBRIQUE" title="[(#DESCRIPTIF|textebrut|entites_html)]">[(#TITRE|supprimer_numero)]</a></li>
            </BOUCLE_rubriques_mots>
                    </ul>
            </B_rubriques_mots>
            </li>
            </BOUCLE_mots>
            </ul>
            </div>
            </B_mots>
    
            <!-- Sous-rubriques -->
            
            <B_sous_rubriques>
            <h2 class="structure"><:sous_rubriques:></h2>
    
            <div class="menu">
            <ul class="ss_rubriques" title="<:sous_rubriques:>">
            <BOUCLE_sous_rubriques(RUBRIQUES) {id_parent} {par titre}>
            <li>
            <div class="menu-titre"><a href="#URL_RUBRIQUE" [title="(#DESCRIPTIF|textebrut|entites_html)"]>[(#TITRE|supprimer_numero)]</a></div>
            <B_sous_sous_rubriques>
                    <ul class="menu-liste">
            <BOUCLE_sous_sous_rubriques(RUBRIQUES) {id_parent} {par titre}>
                    <li class="menu-item"><a href="#URL_RUBRIQUE" [title="(#DESCRIPTIF|textebrut|entites_html)"]>[(#TITRE|supprimer_numero)]</a></li>
            </BOUCLE_sous_sous_rubriques>
                    </ul>
            </B_sous_sous_rubriques>
            </li>
            </BOUCLE_sous_rubriques>
            </ul>
            </div>
            </B_sous_rubriques>
            
            <!-- Sites syndiques -->
            
            <B_sites>
            <div class="menu">
            <div class="divers">
                    <div class="menu-titre">
                    <:sur_web:>
                    </div>
                    <ul>
            <BOUCLE_sites(SITES) {id_rubrique} {par nom_site}>
                    <li class="menu-item">
                    <a href="#URL_SITE">#NOM_SITE</a>
                    <B_syndic>
                    <ul class="menu-liste">
                    <BOUCLE_syndic(SYNDIC_ARTICLES) {id_syndic} {par date} {inverse} {0,3}>
                            <li class="menu-item"><small><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero)]</a></small></li>
                    </BOUCLE_syndic>
                    </ul>
                    </B_syndic>
                    </li>
            </BOUCLE_sites>
                    </ul>
            </div>
            </div>
            </B_sites>
            [
    <div class="menu">
        <div class="divers">
          <div class="menu-titre"><:proposer_site:>
            <div class='reponse_formulaire'>(#FORMULAIRE_SITE)</div>
          </div>
        </div>
    </div>
    ]
            </div>
    
    [<div class="chapo">(#TEXTE)</div>]
    [<div class="notes">(#NOTES)</div>]
    
    <BOUCLE_documents_joints(DOCUMENTS) {id_rubrique} {mode=document} {doublons} {"<br />"}>
    [(#LOGO_DOCUMENT|#URL_DOCUMENT)][<br />([(#TITRE|supprimer_numero)])][ - (#DESCRIPTIF)]
    </BOUCLE_documents_joints>
    <br />
    
    <!-- Articles de la rubrique -->
    
    <h1 class="structure"><:articles_rubrique:></h1>
    
    <h1 class="titre-texte">[(#TITRE|supprimer_numero)]</h1>
    
    <div class="principal1">
    
    <BOUCLE_articles_recents(ARTICLES) {branche} {par titre} {1/2} {unique}>
            <h2><a href="#URL_ARTICLE" [title="(#DESCRIPTIF|textebrut|entites_html)"]>[(#TITRE|supprimer_numero)]</a></h2>
            <div class="detail">
                    [(#LOGO_ARTICLE|left)]
                    <br>
                    [(#DESCRIPTIF)]
                    <br />
                    <br>
            </div>                
            <br />
    </BOUCLE_articles_recents>
    
    </div>
    
    <div class="principal2">
    
    <BOUCLE_articles_recents1(ARTICLES) {branche} {par titre} {unique}>
            <h2><a href="#URL_ARTICLE" [title="(#DESCRIPTIF|textebrut|entites_html)"]>[(#TITRE|supprimer_numero)]</a></h2>
            <div class="detail">
                    [(#LOGO_ARTICLE|left)]
                    <br>
                    [(#DESCRIPTIF)]
                    <br />
                    <br>
            </div>                
            <br />
    </BOUCLE_articles_recents1>
    
    </div>
    
    </div>
    
    
    </body>
    </html>


    lien vers la page test:
    http://www.confort-chauffage-clim.com/1/-Les-differentes-solutions-de-.html

    Dans cette pas on a du mal à maitriser les css et le menu de navigation de la gauche ne veut pas se déplacer.

    Merci par avance à ceux qui voudrons bien partager leurs lumieres avec nous
    GT

    Reply to this message

  • Cette boucle retourne une page blanche lorsque la rubrique comporte des sous-rubrique mais aucun article.

    J’ai contourné le problème de la manière suivante :

    <BOUCLE_Rubriques(RUBRIQUES){id_rubrique}>
            <BOUCLE_SsRubriques(RUBRIQUES){id_parent}></BOUCLE_SsRubriques>
            <?php 
                    if (#TOTAL_BOUCLE>0) {
            ?>
                            <INCLURE(rubrique2.php3){id_rubrique}>
            <?php
                    }
                    else {
            ?>
                    <BOUCLE_articles_plusdun(ARTICLES){id_rubrique}{1,1}>
                            <INCLURE(rubrique2.php3){id_rubrique}> 
                    </BOUCLE_articles_plusdun>
                            <BOUCLE_articles_unseul(ARTICLES){id_rubrique}{0,1}>
                                    <INCLURE(article.php3){id_article}>
                            </BOUCLE_articles_unseul>
                    <//B_articles_unseul>
                    <//B_articles_plusdun>
            <?php 
                    }
            ?>
    </BOUCLE_Rubriques>

    Reply to this message

  • J’ai juste un tit pb : tout fonctionne parfaitement, mais j’ai une ligne en bas qui spécifie ça:

    Fatal error: Cannot redeclare get_extra() (previously declared in /var/www/sdb/c/a/toutladoc/inc-public.php3(20) : eval()’d code:3) in /var/www/sdb/c/a/toutladoc/inc-public.php3(20) : eval()’d code on line 3

    Je pense que c’est lié à un double appel au fichier inc-public, c’est ça ?

    Merci d’avance de vos éclaircissements.

    Reply to this message

  • Bonjour,

    j’ai opté pour ce script qui me semble correspondre à mon site de thèses universitaires, seulement voilà j’ai des difficultés à adapter les boucles

    j’ai utilisé les variantes listés çi dessous mais j’obtiens soit une page blanche et pourtant en code source on peut voir la rubrique, ou alors lorsque je vais directement dans les articles (via l’url directe) j’ai tout les articles de la sous rurbiques enchaine avec la mise en page globale repetée pour chaque article (gros effet d’ascenseur sur la droite :( )

    je pense que le problème est lié à un second niveau de sous rubrique dans une sous-rubrique, je detaille:

    Rubrique: “Conférence publiés” /nous avons la liste des sous rubriques dont 1 sous rubrique = une conférence (evidement il ya plusieurs conférences)

    Sous-rubrique: “Titre de la conférence” /ici la conférence en question va etre separé par des sous rubriques (1 sous rubrique = 1 chapitre, donc plusieurs sous rubrique)

    Sous rubrique: “Titre chapitre de la conférence” /ici on a notre chapitre avec un article là par contre on a 1 seul article dans cette sous rubrique

    donc ici c’est 1 article = 1 chapite incrémenté dans une sous rubrique qui est le chapitre puis dans une sous rubriquequi est le titre de la conférence qui lui est enfin dans la rubrique principale qui est la liste des conférences.

    ma question est:est ce que c’est adapatable que l’on puisse depuis la sous-rubrique “Titre chapitre de la conférence” afficher directement l’article ?

    Merci par avance Cordialement

    Fabcool

    Reply to this message

  • merci pour ce script vraiment très pratique !

    Reply to this message

  • alors que tts les autres sont parfaitement affichées.

    En fait il me semble qu’il manque la première rubrique qui possède plusieurs articles

    qu’en pensez vous?

    Reply to this message

  • merci pour cette astuce très pratique

    Raphaël

    Reply to this message

  • 6

    Merci pour ta variante, mais un message d’erreur s’affiche sur mon site local, il me localise le fichier d’erreur dans le cache de mon site.

    J’ai pourtant suivi tes instructions à la lettre, G copié ton fichier rubrique.html, et G gardé l’ancien en le renommant rubrique normale. Qu’est-ce qui cloche Docteur ?

    • Oui, et tu as raison, ça ne va pas marcher comme ça car j’ai mis un coup rubrique-normal.php3 et un autre rubrique-normale.php3...
      N’avais pas vu !!

      Il faut donc renommer les fichiers siamois en supprimant les “e” , ou changer la ligne

      <INCLURE(rubrique-normal.php3){id_rubrique}> dans article.php3 en la mettant... au féminin.

      Je suis désolée....
      Si ça fonctionne comme ça pour toi, je corrigerai l’article.

      Dominique

      Dominique

    • Merci pour ta réponse Dominique !
      J’essaierai ce soir pour voir si ca marche (la jpeux pas chui o boulo!!) . Je commence à tomber amoureux de spip truc de dingue !

    • C’est nikel ca marche ! Merci pour ce code ingenieux !

    • chez moi ca marche a moitié :
      les pages seules dans une rubrique ou sous rubrique s’affiche directement en effet, mais les autres rubriques ne s’affiche plus, ej ne pense aps avoir fait un truc mal, j’ai du mal a m’en sortir, si qq’un peut jeter un oeil, ce serait génial,
      merci, a+

    • Idem ! Ca ne fonctionne que quand la rubrique ne contient qu’un article !

    • En fait j’avais juste oublié de changer $fond=“rubrique” en $fond=“rubrique_normal” dans rubrique_normal.php3

      Ca marche...

    Reply to this message

  • Bonjour!

    Merci et bravo pour cette contrib qui m’est très utile !

    Tout fonctionne bien, mais j’ai un problème de redirection (article virtuel) un exemple :
    -  Je crée un article ne contenant que le titre et j’utilise l’option redirection en indiquant une URL de type http://www.blablabla.org
    -  Lorsque je me rends sur la rubrique contenant cet article seul le titre de l’article apparaît alors que je voudrais voir directement la page http://www.blablabla.org .

    Avez vous une piste ??

    bobo

    Reply to this message

  • 1
    François

    Bonjour!

    Merci pour cette boucle.

    Ça marche nickel quand j’ai une rubrique (ou sous-rubrique) qui contient 1 (article affiché directement) ou plusieurs articles (rubrique affichée), mais pas quand ma rubrique ne contient que des sous-rubriques (là, je n’ai rien d’affiché).

    C’est probablement tout bête, mais je n’arrive pas à modifier la boucle pour que ça marche pour les rubriques qui ne contiennent que des sous-rubriques....

    Une idée?

    François

    • François

      Je me répond tout seul.

      Il suffit de spécifier, dans le cas ou la boucle BOUCLE_articles_unseul ne renvoie rien, qu’il faut afficher la rubrique normale.

      Ça donne ceci:

      <BOUCLE_principale(RUBRIQUES) {id_rubrique} >
      <B_articles_plusdun>
      <BOUCLE_articles_plusdun(ARTICLES) {id_rubrique} {1,1}>  
      <INCLURE(rubrique-normale.php3){id_rubrique}>
      </BOUCLE_articles_plusdun>
      </B_articles_plusdun>
      <B_articles_unseul>
      <BOUCLE_articles_unseul(ARTICLES) {id_rubrique} {0,1}>
      <INCLURE(article.php3){id_article}>
      </BOUCLE_articles_unseul>
      </B_articles_unseul>
      <INCLURE(rubrique-normale.php3){id_rubrique}>
      <//B_articles_unseul>
      <//B_articles_plusdun>
      
      </BOUCLE_principale>
      
      <//B_principale>

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom