SPIP - Contrib

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



Accueil du site > Navigation > Menus déroulants > Archives Menus

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

mercredi 26 mai 2004, par Dominique. Dernier ajout mercredi 6 décembre 2006



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


Répondre à cet article

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

    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

    Répondre à ce message

    Retour au début des forums

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

    Répondre à ce message

    Retour au début des forums

  • Merci pour cette contrib !

    27 octobre 2005 11:00

    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.

    Répondre à ce message

    Retour au début des forums

  • 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

    Répondre à ce message

    Retour au début des forums

  • merci pour ce script vraiment très pratique !

    Répondre à ce message

    Retour au début des forums

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

    Voir en ligne : http://oze.fr

    Répondre à ce message

    Retour au début des forums

  • Retour au début des forums

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

    Répondre à ce message

    Retour au début des forums

  • 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

    Répondre à ce message

    Retour au début des forums

  • 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

    Répondre à ce message

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

      Répondre à ce message

    Retour au début des forums

  • Juste une question de débutant sur la mini variante :
    - elle marche tres bien : bravo, c’est simple
    - Comment faire pour pouvoir avoir des variantes de rubrique-normale.html suivant le numéro de la rubrique ?

    Exemple : j’ai essaye de faire une rubrique de type : rubrique-11.html pour que celle ci coincide avec ma rubrique 11 mais dans ce cas la, la mini-variante est court-circuitee sur l’ensemble du site.

    J’imagine que ma question va faire sourire mais en essayant de comprendre la logique php , je ne vois pas ou placer un changement pour retrouver cette fonctionalité ...

    Je voudrais tant garder cette mini variante si simple d’emploi.

    Répondre à ce message

    • Effectivement, la "descendance" de la rubrique 11 n’utilise plus rubrique.html, et donc ne fait plus les tests pour savoir s’il n’y a qu’un article... Pour le reste des rubriques du site par contre il demeure...

      Donc il y a effectivement un pb pas évident si la rubrique 11 a un ensemble de sous rubriques sur lesquelles on aimerait garder la variante...
      J’avais eu ce problème, mais le squelette de mes sous-rubriques était standard (donc j’utilisais rubrique=11.html et j’ai donc zappé ça sans le voir).

      Bon, reste à réflechir : il doit y avoir une solution. Je vais voir si j’arrive à faire ça sans créer une "usine à gaz". Promis, je regarde... Ca va me faire l’occasion de bidouiller un peu du SPIP : toujours sympa, même si "pas-trop-le-temps-comme tout le monde".
      Et si de ton côté tu vois la solution, c’est tout bon : dis le sur le site.

      Amicalement,
      Dominique

      Répondre à ce message

    Retour au début des forums

  • Bonjour,

    Wew !! Je pense que si on rajoute ça :

    <BOUCLE_sous_rubriques(RUBRIQUES){id_parent}>
    <BOUCLE_articles_un(ARTICLES) {id_rubrique} {0,1}>
    <INCLURE(article.php3){id_article}>
    </BOUCLE_articles_un>
    </BOUCLE_sous_rubriques>

    derrière la boucle <BOUCLE_articles_unseul>, ça doit fonctionner pour la sous rubrique. Mais s’il y a deux sous-rubriques il y aura les deux (sauf si on le demande explicitement)... Mais si la sous rubrique a plusieurs articles, on n’aura que le premier !

    Donc pas évident, évident : pour une utilisation très particulière ça peut marcher. Mais sinon il faudrait faire un truc vraiment récursif et là, je ne sais pas si je vais y arriver !! Mais je vais réfléchir quand même :°(((

    Amicalement, Dominique

    Répondre à ce message

    Retour au début des forums

  • > Problème d’affichage pour des sous-rubriques

    26 septembre 2004 17:37, par tony ?

    Bonjour. Que faut-il changer pour que ça fonctionne lorsque l’article est dans une sous-rubrique et non une rubrique ? Merci et bravo.

    Répondre à ce message

    Retour au début des forums



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