Interrompre une boucle Hierarchie

Bonsoir.

Je souhaite qu'une boucle HIRERARCHIE ne remonte pas jusqu'en haut du
secteur, mais s'arrête avant la rubrique courante.
J'affiche les titres des articles d'une branche avec un critère {tout}
et voudrais afficher avec chacun le chemin qui y mène à partir de la
rubrique courante.
Remonter plus haut serait du remplissage inutile puisque commun à toute
la page.
Un critère qui va bien, une idée?

J'ai repris le titre d'un message de mars 2007, car la question me
semble de même nature.

Merci

--
Bertrand

B.d'Espalungue wrote:

Je souhaite qu'une boucle HIRERARCHIE ne remonte pas jusqu'en haut

> ...

Un critère qui va bien, une idée?

{a,b} ou {a,n-b} probablement.

Voir Les critères communs à toutes les boucles - SPIP

Paolo

Paolo wrote:

B.d'Espalungue wrote:
> Je souhaite qu'une boucle HIRERARCHIE ne remonte pas jusqu'en haut
> ...

J'avais à tort mentionné {tout}, c'est {branche} que j'ai comme critère
de choix des articles

La structure du squelette, très résumée:

/---
<BOUCLE_rubrique_principal(RUBRIQUES) {id_rubrique}>
  <BOUCLE_articles(ARTICLES){branche}{par date}{inverse}>
    <BOUCLE_chemin(HIERARCHIE) {id_article}{inverse}{"&lt;"}>
      <a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
\---

qui permet de se rapprocher d'un article, à la distance souhaitée.

> Un critère qui va bien, une idée?

{a,b} ou {a,n-b} probablement.

Voir Les critères communs à toutes les boucles - SPIP

{0,n-b} pourrait convenir, donc
<BOUCLE_chemin(HIERARCHIE) {id_article}{inverse}{0,n-b}{"&lt;"}>

b serait le niveau de la rubrique principale.
Pour l'obtenir, serait-ce une bonne idée d'utiliser cette contrib:
http://www.spip-contrib.net/Obtenir-le-niveau-d-imbrication-d ?

Merci

--
Bertrand

B.d'Espalungue wrote:

<BOUCLE_chemin(HIERARCHIE) {id_article}{inverse}{"&lt;"}>

Que signifie {inverse} en absence de critère de tri ?

Pour l'obtenir, serait-ce une bonne idée d'utiliser cette contrib:
http://www.spip-contrib.net/Obtenir-le-niveau-d-imbrication-d ?

J'ai l'impression que cette contrib date du temps quand les critères {a,n-b} et {n-a,b} n'existait pas.

Paolo

Paolo a écrit :

B.d'Espalungue wrote:

<BOUCLE_chemin(HIERARCHIE) {id_article}{inverse}{"&lt;"}>

Que signifie {inverse} en absence de critère de tri ?

on "remonte" la hierarchie au lieu de la "descendre"

mais pour repondre à la question initiale, sans doute :
<BOUCLE_chemin(HIERARCHIE){id_article}{inverse}{"&lt;"}{id_rubrique!=#ID_SECTEUR}>

sinon je tenterai
<BOUCLE_chemin(HIERARCHIE){id_article}{inverse}{"&lt;"}{0,-1}>

Paolo wrote:

B.d'Espalungue wrote:
> <BOUCLE_chemin(HIERARCHIE) {id_article}{inverse}{"&lt;"}>

Que signifie {inverse} en absence de critère de tri ?

De la rubrique parent de l'article vers la rubrique tête de secteur,
autre formulation de la réponse de Stéphane.

> Pour l'obtenir, serait-ce une bonne idée d'utiliser cette contrib:
> http://www.spip-contrib.net/Obtenir-le-niveau-d-imbrication-d ?

J'ai l'impression que cette contrib date du temps quand les critères {a,n-b} et
{n-a,b} n'existait pas.

Comme elle est dans la rubrique "Bidouilles pour avant SPIP 1.9",
et mentionne "Dernier ajout dimanche 16 février 2003" ,
ça ne m'étonnerait pas vraiment.

--
Bertrand

Stephane wrote:

mais pour repondre à la question initiale, sans doute :
<BOUCLE_chemin(HIERARCHIE){id_article}{inverse}{"&lt;"}{id_rubrique!=#ID_SECTEUR}>

sinon je tenterai
<BOUCLE_chemin(HIERARCHIE){id_article}{inverse}{"&lt;"}{0,-1}>

C'est bien idée, sous l'une ou l'autre forme,
mais ça ne peut pas fonctionner comme je le souhaite si on utilise 2 constantes.

Je visite par exemple la rubrique r111, fille de r11, du secteur r1
j'affiche les articles de la rubrique r111 et ses descendants r1111,
r1112, r11111, r11112, r111121
(les ai sont les articles)
Le squelette pourrait s'appeler rubrique-111.html

r1
  r11
    r111 (a1)
      r1111 (a1, a2)
        r11111 (a1)
        r11112 (a1)
          r111121 (a1)
      r1112

et veux restituer ça:
article chemin
111a1
1111a1 r1111
1111a2 r1111
1112a2 r1112
11111a1 r11111 < r1111
11112a1 r11112 < r1111
111121a1 r111121 < r11112 < r1111

et que si je me place dans une sous-rubrique, par exemple r1111,
j'obtienne ça:
1111a1
1111a2
11111a1 r11111
11112a1 r11112
111121a1 r111121 < r11112

Les extrémités de la boucle doivent être d'une part la sous rubrique (ou
sous-sous-sous /etc/ rubrique) parent de l'article examiné,
et d'autre part la rubrique de la page visitée au gré du visiteur.

Je pense qu'il est difficlie de s'en tirer sans calculer au moins le
niveau de profondeur de la rubrique que consulte le visiteur.
Ce serait jouable sans php?

Merci

--
Bertrand

B.d'Espalungue a écrit :

Stephane wrote:

mais pour repondre à la question initiale, sans doute :
<BOUCLE_chemin(HIERARCHIE){id_article}{inverse}{"&lt;"}{id_rubrique!=#ID_SECTEUR}>

sinon je tenterai
<BOUCLE_chemin(HIERARCHIE){id_article}{inverse}{"&lt;"}{0,-1}>

C'est bien idée, sous l'une ou l'autre forme,
mais ça ne peut pas fonctionner comme je le souhaite si on utilise 2 constantes.

Je visite par exemple la rubrique r111, fille de r11, du secteur r1
j'affiche les articles de la rubrique r111 et ses descendants r1111,
r1112, r11111, r11112, r111121
(les ai sont les articles)

ah, ben j'avais pas compris du tout alors...

si tu veux decrire la branche à partir du noeud sur lequel tu es, il faut faire un peu de récursif comme pour les menus que tu pourras trouver sur spip-contrib.
si tu veux juste les articles, tu as le critere {branche}, mais ca n'ordonnera sans doute pas comme tu le souhaites

pour pouvoir ecrire les chemins comme tu le souhaites, le récursif sera sans doute la meilleure methode.
tu dois pouvoir faire :

[(#INCLURE{inc-branche}{id_rubrique})]

et dans inc-branche.html
<BOUCLE_R(RUBRIQUES){id_parent=#ENV{id_rubrique}>
<BOUCLE_A(ARTICLES){id_rubrique}>
[article : (#TITRE)]
[chemin : (#ENV{chemin})]
</BOUCLE_A>
[(#INCLURE{inc-branche}{id_rubrique}{chemin=#ENV{chemin_parent} < #TITRE})]
<BOUCLE_R>

pas testé, mais ca doit ressembler à ca.

> > Je souhaite qu'une boucle HIRERARCHIE ne remonte pas jusqu'en haut
> > ...

J'avais à tort mentionné {tout}, c'est {branche} que j'ai comme critère
de choix des articles

La structure du squelette, très résumée:

/---
<BOUCLE_rubrique_principal(RUBRIQUES) {id_rubrique}>
        <BOUCLE_articles(ARTICLES){branche}{par date}{inverse}>
                <BOUCLE_chemin(HIERARCHIE) {id_article}{inverse}{"&lt;"}>
                        <a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
\---

qui permet de se rapprocher d'un article, à la distance souhaitée.

> > Un critère qui va bien, une idée?
>
> {a,b} ou {a,n-b} probablement.
>
> Voir Les critères communs à toutes les boucles - SPIP

{0,n-b} pourrait convenir, donc
<BOUCLE_chemin(HIERARCHIE) {id_article}{inverse}{0,n-b}{"&lt;"}>

b serait le niveau de la rubrique principale.

La difficulté était de donner la bonne valeur (variable) à b.
C'est résolu, en spip 100% standard avec la boucle HIERARCHIE:

1/
Je récupère le niveau en sortie du fil d'Ariane,
et le conserve dans la variable profondeur

<BOUCLE_ariane(HIERARCHIE){id_rubrique}{doublons}>
  &gt; <a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero|couper{80})]</a>
</BOUCLE_ariane>
  #SET{profondeur,#TOTAL_BOUCLE}
</B_ariane>
  #SET{profondeur,0}
<//B_ariane>

2/
J'utilise la variable profondeur dans un critère {n-b},
l'aspect est compliqué mais ça fonctionne.

<BOUCLE_articles(ARTICLES){branche}{par date}{inverse}>
  <tr>
    <td>[(#TITRE|supprimer_numero)]</td>
    <td>
    <BOUCLE_chemin(HIERARCHIE) {id_article}{inverse}{0,n-#EVAL{1 + #GET{profondeur}}}{"&lt;"}>
      <a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero|couper{20})]</a>
    </BOUCLE_chemin>
    </td>
  </tr>
</BOUCLE_articles>

--
Bertrand