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

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

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

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

    Répondre à ce 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>

    Répondre à ce 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.

    Répondre à ce 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

    Répondre à ce message

  • merci pour ce script vraiment très pratique !

    Répondre à ce 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 ?

    Répondre à ce message

  • merci pour cette astuce très pratique

    Raphaël

    Répondre à ce 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...

    Répondre à ce 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

    Répondre à ce message

  • 1

    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

    • 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

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom