Afficher le Chemin de navigation

Où comment afficher sur votre page le chemin de navigation exact quel que soit la situation (du style Sommaire > Secteur > Rubrique)

Cette boucle reprend l’idée de Chemin de navigation et la complète.
Elle répond à (presque) toute les situations.

La boucle de navigation proposée se base essentiellement sur la boucle HIERARCHIE documentée.

On peut se situer dans trois cas différents
-  A) dans aucune rubrique, c’est le cas dans sommaire.html.
-  B) dans une rubrique de la racine, pas de parent.
-  C) dans une sous-rubrique

La définition de la boucle HIERARCHIE est précise :

Cette boucle retourne la liste des RUBRIQUES qui mènent de la racine du site à la rubrique ou à l’article en cours.

conséquence :
-  D) aussi la rubrique (ou sous-rubrique) en cours ne fait pas partie du résultat de la boucle. Il convient donc de traiter ce cas.

-  E) Pour faciliter la navigation on souhaite activer les liens uniquement sur les rubriques parents de la rubrique en cours (quelque soit le degré de parenté).

<div class="typo_hierarchie"><!-- pour la beauté! -->
  <BOUCLE_rubrique(RUBRIQUES) {id_rubrique}> <!-- appel externe -->
    <B_hierarchie> 

<!-- situation C + E - si la boucle renvoie au moins une valeur lien pour revenir au sommaire -->

      <a href="sommaire.php3" title="<:retour_ sommaire:>"><:sommaire:> -> </a>

<!-- situation C + E - c'est le cas classique -->
      <BOUCLE_hierarchie(HIERARCHIE) {id_rubrique} {" -> "}> 
        <a [href="(#URL_RUBRIQUE)"] [title="(#DESCRIPTIF|textebrut|attribut_html)"]>[(#TITRE|supprimer_numero)]</a>	      </BOUCLE_hierarchie>

<!-- situation D - ajouter le titre de la rubrique en cours sans lien (pas besoin de boucler sur soi-même)-->
      [ ->    (#TITRE|supprimer_numero)]
      </B_hierarchie>
 
<!-- cas B + E) on peut être dans une rubrique racine (la racine n'a pas de parent, on n'est donc pas entrée dans BOUCLE_hierarchie -->
        [<a href="sommaire.php3" title="<:retour_ sommaire:>"><:sommaire:></a> -> (#TITRE|supprimer_numero|sinon{"<:sommaire:>"})] <!-- le filtre sinon n'est peut-être pas nécessaire mais j'avais envie de le tester -->
      <//B_hierarchie>
  </BOUCLE_rubrique>

<!-- cas A on est réellement au sommaire id_rubrique=0 on n'est donc pas entrée dans BOUCLE_rubrique-->
     <:sommaire:>
  <//B_rubrique>
</div>

Placée dans un fichier externe elle s’appelle dans tous les cas par

<INCLURE (nom_du_fichier.php3) {id_rubrique}>

Validité SPIP 1.6 et +

updated on 5 December 2006

Discussion

2 discussions

  • 9
    nudelfresser

    J’ai un souci d’affichage.
    C’est ma première boucle ajoutée depuis un fichier que j’ai créé moi-même.

    Quelqu’un peut m’éclairer ?

    > Voir ici, en haut de page

    (je mets un lien car si je mets ici ce que j’ai sur ma page, ça s’affiche bien sûr différemment)

    Merci beaucoup d’avance, si vous m’aidez ça me débloquera pour mieux comprendre le fonctionnement des boucles.

    • Apparemment la boucle n’a pas été copiée correctement ou les corrections apportées ont cassé le code.

      Il faut vérifier la parité des balises.

      Au cas où il aurait encore quelques difficultés passer un message avec le code entre les balises <code> votre code... </code>

    • nudelfresser

      Merci beaucoup pour cette rapide réponse.

      J’ai essayé de déplacer l’include INCLURE à divers endroits, sans succès.

      C’est pour ainsi dire la première manip’ que je fais sur Spip depuis son installation, à part la création de rubriques et d’articles.

      Est-ce que cette boucle de chemin de navigation peut a priori être installée sans autre modification ou ajout préalable ?

      Je suis hyper frustré que ça fonctionne très bien chez tout le monde sauf chez moi. :)
      Pour le moment mon site est petit mais j’apprécie beaucoup cette fonctionnalité...

      Une autre idée ?

    • En principe il n’y a rien à retoucher à la boucle.

      Il faut définir dans le fichier de langue ./ecrire/lang/local_fr.php3 les éléments
      <:retour_sommaire:> et <:sommaire:> par exemple

      ’retour_sommaire’ => ’Retour au sommaire’,

      ’sommaire’ => ’Sommaire’,

      Placer la boucle dans un fichier inclu permet de l’appeller depuis diverses pages

      J’ai placé dans le wiki évolution ou variante une nouvelle boucle plus complète et qui fonctionne parfaitement sous la version spip1.8

    • Je n’ai pas de fichier local_fr mais un fichier ecrir_fr que j’ai bien modifié.

      Je viens de replacer la boucle à la racine du site et non dans un dossier mais ça ne change rien.
      J’ai aussi renommé les deux boucles pour qu’elles ne portent pas le même nom que les boucles déjà présentes dans l’article : BOUCLE_chemin pour BOUCLE_rubrique et BOUCLE_arbo pour BOUCLE_hierarchie mais ça ne change rien non plus...

      Est-ce que ça peut être parce que je n’ai pas les filtres d’office ? Ce qui ferait bugger le filtre supprimer_numero.
      Mais il me semble pourtant qu’il fait partie des filtres pas défaut.

      Ce que ça donne pour le moment :

      <:sommaire:> -> "}> [(#TITRE|supprimer_numero)] [ -> (#TITRE|supprimer_numero)] [<:sommaire:> -> (#TITRE|supprimer_numero|sinon{"<:sommaire:>"})] <:sommaire:>
      Avec des liens à chaque fois sur <:sommaire:>

    • Correction : le lien n’est présent que sur les 2 premiers <:sommaire:> et non sur les deux derniers.

    • nudelfresser

      Pardon pour ces multiples réponses.

      J’ai enlevé les filtres pour y voir plus clair mais le problème demeure.

      Voir le résultat.

    • Il est assez surprenant que le code de la boucle ne soit pas compilé par SPIP lors de la création de la page!

      Dans le source de la page produite on constate
      -  <BOUCLE_arbo(HIERARCHIE) {id_rubrique} { -> "}>

      En principe cette partie devrait s’écrire
      -  <BOUCLE_arbo(HIERARCHIE) {id_rubrique} {" -> "}>

      ce qui a créé vraisemblablement une erreur dans la boucle qui n’est plus correctement interprétée par SPIP

    • Salut, J’ai galéré comme toi pour résoudre ce problème. Voici la solution :

      Le code donné ci-en haut, tu le mets dans ton répertoire DIST (là ou se trouve tes fichiers HTML) dans un fichier appelé : hierarchie.html ET NON DANS UN FICHIER PHP3 ! (c’est ça l’erreur à ne pas commettre).

      Ensuite tu crées un fichier PHP3 à la racine de ton site (là où se trouvent tes fichiers PHP3) : hierarchie.php3

      Ce fichier php3 doit contenir ceci :

      <?php
      
      $fond = "hierarchie"; //nom du fichier HTML correspondant
      $delais = 24 * 3600;
      
      include ("inc-public.php3");
      
      ?>

      Ca fonctionne cette fois sans prob sous Spip 1.8.2. Il semble que ne pas passer par la structure “fichier PHP3 / Fichier HTML” fasse planter la transmission de la variable “ID_rubrique”.

    • Salut, J’ai galéré comme toi pour résoudre ce problème. Voici la solution :

      Le code donné ci-en haut, tu le mets dans ton répertoire DIST (là ou se trouve tes fichiers HTML) dans un fichier appelé : hierarchie.html ET NON DANS UN FICHIER PHP3 ! (c’est ça l’erreur à ne pas commettre).

      Ensuite tu crées un fichier PHP3 à la racine de ton site (là où se trouvent tes fichiers PHP3) : hierarchie.php3

      Ce fichier php3 doit contenir ceci :

      <?php
      
      $fond = "hierarchie"; //nom du fichier HTML correspondant
      $delais = 24 * 3600;
      
      include ("inc-public.php3");
      
      ?>

      Ensuite dans ta page (par exemple) article.html, tu ajoutes ceci à l’endroit de ton choix (là où tu souhaites que la hierarchie apparraisse) :

      <!-- Hierarchie -->
      <INCLURE (hierarchie.php3){id_rubrique}>

      Ca fonctionne cette fois sans prob sous Spip 1.8.2. Il semble que ne pas passer par la structure “fichier PHP3 / Fichier HTML” fasse planter la transmission de la variable “ID_rubrique”.

    Reply to this message

  • 4
    Hakunamatata

    Bonjour

    J’ai un problème, la racine du chemin d’accès s’affiche :
    public/spip/ecrire:sommaire -> ... -> ...

    Que faire svp ?
    Merci !

    • Il est vraissemblable que le problème vienne du fichier de langue qui n’est pas renseigné. Dans un fichier ecrire/lang/local_fr.php ou php3 (selon l’install) il faut entrer une ligne ’sommaire’=>’Sommaire’.

    • Bonjour.
      J’ai le même problème d’affichage :
      public/spip/ecrire:sommaire -> Informations -> Sous-rubrique 02

      Quelle doit être la syntaxe exacte du fichier local_fr.php3 ?

      J’ai essayé plusieurs trucs sans résultat...

      Merci

      SB

    • cechat

      comme tous les autres fichiers de langue, par exemple :

      <?php
      
      
      $GLOBALS[$GLOBALS['idx_lang']] = array(
      
      'sommaire' => 'Sommaire', //ne pas oublier la virgule après chaque élément.
      'etc' => 'etc...',
      
      // fin du tableau de valeurs de langue
      'fin_fichier' => '' //dernier élément : pas de virgule
      );
      ?>

      voir

    • Merci beaucoup, ça marche !

      désolé, mais je débute avec SPIP et php alors...

      Merci encore.

      SB

    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