affichage à partir des sous-rubrique

bonjour doué(e)s de la boucle!
ma question du jour je l'ai déjà posé en vain sur le forum de l'article de Nicolas Hoizey...
Elle concerne directement l'utilisation de son menu "dynamique et contextuel" mais pour les bouts de SPIP qu'il y a dedans alors peut-être pourrez-vous m'aider...

il me semble que le problème se situe bien ligne 37: le {id_parent=0} fait bien que les rubriques sont prises depuis la racine... on aurait pu mettre {racine} (j'ai lu la doc :)). du coup l'affichage du menu montre les premières rubriques et les arborescences qui suivent.

comme mon objectif est de faire un site bilingue avec une langue par secteur, je voudrais que le menu ne m'affiche pas les premières rubriques!

si je remplace {id_parent=0} par {id_parent=1}, en plus de ne pas savoir exactement pourquoi je le fais (ce qui gratte un peu) je constate que la rubrique 1 du premier secteur n'est plus affichée ! super ! mais quand je bascule dans l'autre secteur, le menu n'apparait plus du tout... sauf si je mets {id_parent=2} puisque la rubrique "mère" de l'autre secteur est la 2.
hum. ça semble logique tout ça... mais faire un menu pour chaque secteur alors que je n'ai qu'une page rubrique...

si je remplace {id_parent=0} par {id_parent} j'ai l'affichage que je voulais! sauf qu'il faut rester au premier niveau de l'arborescence parce que le menu ne montre plus que les rubriques situées "en dessous" de celle où on se trouve! et sans puce encore!

voilà ma question (ouf) : que faire?

--
jc

Et id_parent!=0 ne marche pas ?
YR
Le 28 juil. 04, à 09:24, Jean-Christophe Sekinger a écrit :

bonjour doué(e)s de la boucle!
ma question du jour je l'ai déjà posé en vain sur le forum de l'article de Nicolas Hoizey...
Elle concerne directement l'utilisation de son menu "dynamique et contextuel" mais pour les bouts de SPIP qu'il y a dedans alors peut-être pourrez-vous m'aider...

il me semble que le problème se situe bien ligne 37: le {id_parent=0} fait bien que les rubriques sont prises depuis la racine... on aurait pu mettre {racine} (j'ai lu la doc :)). du coup l'affichage du menu montre les premières rubriques et les arborescences qui suivent.

comme mon objectif est de faire un site bilingue avec une langue par secteur, je voudrais que le menu ne m'affiche pas les premières rubriques!

si je remplace {id_parent=0} par {id_parent=1}, en plus de ne pas savoir exactement pourquoi je le fais (ce qui gratte un peu) je constate que la rubrique 1 du premier secteur n'est plus affichée ! super ! mais quand je bascule dans l'autre secteur, le menu n'apparait plus du tout... sauf si je mets {id_parent=2} puisque la rubrique "mère" de l'autre secteur est la 2.
hum. ça semble logique tout ça... mais faire un menu pour chaque secteur alors que je n'ai qu'une page rubrique...

si je remplace {id_parent=0} par {id_parent} j'ai l'affichage que je voulais! sauf qu'il faut rester au premier niveau de l'arborescence parce que le menu ne montre plus que les rubriques situées "en dessous" de celle où on se trouve! et sans puce encore!

voilà ma question (ouf) : que faire?

--
jc

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip

yorghos.remvikos a écrit :

Et id_parent!=0 ne marche pas ?

ça marche en partie parce qu'effectivement les rubriques "mère" ne sont plus affichées... mais /toutes/ les sous-rubriques sont affichées au même niveau alors qu'elles sont à des niveaux différents : certaines d'entre elles peuvent êre dépliées et quand on le fait on retrouve les sous rubriques déja affichées...

si j'enlève le php j'ai les boucles suivantes :

<BOUCLE_secteurs(RUBRIQUES){id_parent!=0}{par titre}{lang}>
    <BOUCLE_nb_rubriques(RUBRIQUES){id_parent}>
    </BOUCLE_nb_rubriques>
<a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
    <BOUCLE_rubriques(RUBRIQUES){id_parent}{par titre}>
        <BOUCLE_nb_sous_rubriques(RUBRIQUES){id_parent}>
        </BOUCLE_nb_sous_rubriques>
        <a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
              <BOUCLE_sous_rubriques(BOUCLE_rubriques)>
              </BOUCLE_sous_rubriques>
    </BOUCLE_rubriques>
</BOUCLE_secteurs>

est ce que ça peut être le {id_parent} des boucles imbriquées dans la BOUCLE_secteurs? puisque la doc dit: "*{id_parent}* retourne la liste des rubriques contenues dans une rubrique." ce {id_parent} afficherait donc toutes les rubriques quelque soit leur profondeur au même niveau?
Existerait-il alors un moyen de ne reconstituer la hiérarchie des sous-rubriques?
j'avance là?

c'est en fait très simpple.

Tu veux afficher les sous-rubriques de la racine, donc il faut faire :
<BOUCLE_rubriques_racine (RUBRIQUES) {racine}>
<BOUCLE_sous_rubriques (RUBRIQUES) {id_parent}>
#TITRE
</BOUCLE_sous_rubriques>
</BOUCLE_rubriques_racine>

Olivier G.

Jean-Christophe Sekinger wrote:

yorghos.remvikos a écrit :

Et id_parent!=0 ne marche pas ?

ça marche en partie parce qu'effectivement les rubriques "mère" ne sont plus affichées... mais /toutes/ les sous-rubriques sont affichées au même niveau alors qu'elles sont à des niveaux différents : certaines d'entre elles peuvent êre dépliées et quand on le fait on retrouve les sous rubriques déja affichées...

si j'enlève le php j'ai les boucles suivantes :

<BOUCLE_secteurs(RUBRIQUES){id_parent!=0}{par titre}{lang}>
   <BOUCLE_nb_rubriques(RUBRIQUES){id_parent}>
   </BOUCLE_nb_rubriques>
<a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
   <BOUCLE_rubriques(RUBRIQUES){id_parent}{par titre}>
       <BOUCLE_nb_sous_rubriques(RUBRIQUES){id_parent}>
       </BOUCLE_nb_sous_rubriques>
       <a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
             <BOUCLE_sous_rubriques(BOUCLE_rubriques)>
             </BOUCLE_sous_rubriques>
   </BOUCLE_rubriques>
</BOUCLE_secteurs>

est ce que ça peut être le {id_parent} des boucles imbriquées dans la BOUCLE_secteurs? puisque la doc dit: "*{id_parent}* retourne la liste des rubriques contenues dans une rubrique." ce {id_parent} afficherait donc toutes les rubriques quelque soit leur profondeur au même niveau?
Existerait-il alors un moyen de ne reconstituer la hiérarchie des sous-rubriques?
j'avance là?
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip

Olivier GENDRIN a écrit :

c'est en fait très simpple.

Tu veux afficher les sous-rubriques de la racine, donc il faut faire :
<BOUCLE_rubriques_racine (RUBRIQUES) {racine}>
<BOUCLE_sous_rubriques (RUBRIQUES) {id_parent}>
#TITRE
</BOUCLE_sous_rubriques>
</BOUCLE_rubriques_racine>

oui mais dans ce cas, j'en reviens au fonctionnement par défaut de ce menu : l'affichage de toutes les rubriques depuis la racine... or j'aimerais (l'innocent) que les rubriques de 1er niveau ne soient pas affichées...

--
jc
-
voila ce qui arrive quand on utilise des choses qu'on ne comprend pas: il arrive un moment où on a besoin de les comprendre...

Essaie la boucle avant de critiquer sans réfléchir !

Est ce que tu as au moins essayer de comprendre comment elle fonctionne ? Cette boucle N'AFFICHE PAS les rubriques de premier niveau. Je veux bien t'aider, mais si tu ne fais même l'effort minimum pour essayer de comprendre,je peux te garantir que tu va bientôt te sentir bien seul !

Olivier G.

Jean-Christophe Sekinger wrote:

Olivier GENDRIN a écrit :

c'est en fait très simpple.

Tu veux afficher les sous-rubriques de la racine, donc il faut faire :
<BOUCLE_rubriques_racine (RUBRIQUES) {racine}>
<BOUCLE_sous_rubriques (RUBRIQUES) {id_parent}>
#TITRE
</BOUCLE_sous_rubriques>
</BOUCLE_rubriques_racine>

oui mais dans ce cas, j'en reviens au fonctionnement par défaut de ce menu : l'affichage de toutes les rubriques depuis la racine... or j'aimerais (l'innocent) que les rubriques de 1er niveau ne soient pas affichées...

Olivier GENDRIN a écrit :

Essaie la boucle avant de critiquer sans réfléchir !

Est ce que tu as au moins essayer de comprendre comment elle fonctionne ? Cette boucle N'AFFICHE PAS les rubriques de premier niveau. Je veux bien t'aider, mais si tu ne fais même l'effort minimum pour essayer de comprendre,je peux te garantir que tu va bientôt te sentir bien seul !

j'ai essayé cette boucle merci :slight_smile: j'essaye de la comprendre mais je ne l'applique sûrement pas au bon endroit puisqu'à la manière dont je l'ai utilisée elle m'affiche ce premier niveau que je ne veux pourtant pas vor...
je ne te critique certainement pas! c'est un malentendu! j'apprécie beaucoup la patience que vous avez et j'ose espérer que vous en aurez encore un peu. Je n'ai jamais considéré vos réponses comme un dû.

Mettre id_parent!=0 dans la première boucle, pour les autres mettre partout {id_rubrique}

j'avais bien pensé ça mais ça ne marche pas... merci :slight_smile:

Attends, hôte moi un doute.

Ce que tu appelle premier niveau, c'est bien la racine non ?

Parce que sinon, il faut que tu duplique la boucle sous_rubriques en sous_sous_rubriques...

Olivier G.

Jean-Christophe Sekinger wrote:

Olivier GENDRIN a écrit :

Essaie la boucle avant de critiquer sans réfléchir !

Est ce que tu as au moins essayer de comprendre comment elle fonctionne ? Cette boucle N'AFFICHE PAS les rubriques de premier niveau. Je veux bien t'aider, mais si tu ne fais même l'effort minimum pour essayer de comprendre,je peux te garantir que tu va bientôt te sentir bien seul !

j'ai essayé cette boucle merci :slight_smile: j'essaye de la comprendre mais je ne l'applique sûrement pas au bon endroit puisqu'à la manière dont je l'ai utilisée elle m'affiche ce premier niveau que je ne veux pourtant pas vor...
je ne te critique certainement pas! c'est un malentendu! j'apprécie beaucoup la patience que vous avez et j'ose espérer que vous en aurez encore un peu. Je n'ai jamais considéré vos réponses comme un dû.

Ce que tu appelle premier niveau, c'est bien la racine non ?

Parce que sinon, il faut que tu duplique la boucle sous_rubriques en sous_sous_rubriques...

oui, oui, les rubriques situées à la racine sont bien celles que j'appelle "de premier niveau". en fait je n'avais pas réalisé que tes boucles n'étaient pas à adapter au menu dynamique de Nicolas Hoizey, comme j'ai malencontreusement tenté de le faire... mais qu'il aurait fallu que mes compétences me permettent de reconstituer ce menu dynamique et contextuel autour de tes boucles! et je n'y connais rien en php (à part "hello world" ;))
ta solution marche bien mais je n'ai plus du tout (bien sûr) le menu de Nicolas Hoizey.
et là...

bon, voilà un bon menu (statique) qui n'affiche pas les rubriques de la racine et seulement celles de la langue choisie (c'est ce qu'il faut quand on a décidé d'avoir une langue par secteur):

01. <BOUCLE_rubriques_racine (RUBRIQUES) {racine}{lang}>
02. <BOUCLE_sous_rub (RUBRIQUES) {id_parent}{par num titre}>
03. [(#TITRE|supprimer_numero)]<br>
04. <BOUCLE_sous_sous_rub(RUBRIQUES) {id_parent}{par num titre}>
05. [(#TITRE|supprimer_numero)]<br>
06. </BOUCLE_sous_sous_rub>
07. </BOUCLE_sous_rub>
08. </BOUCLE_rubriques_racine>

mais ce que je comprends de ces boucles est contraire à ce que je croyais savoir... ma petite logique patine là-dessus:

- la ligne 01 prend toutes les rubriques d'une langue. ça c'est bon
- la ligne 02 prend les rubriques de 2ème niveau et la ligne 03 en affiche les titres (là je le vois bien mais la doc dit "{id_parent} retourne la liste des rubriques /contenues/ dans une rubrique." donc ici /toutes/ les rubriques quelles que soit leur profondeur et sauf les rubriques situées à la racine?)
pas de pb sur les lignes suivantes... ma question (puisque de toute façon je n'arrive pas du tout à adapter ces boucles au menu de Nicolas Hoizey) concerne donc ma lecture de la doc:

que fait exactement {id_parent}?

(excusez une question aussi basique mais je perds mon latin là)

Jean-Christophe Sekinger wrote:

bon, voilà un bon menu (statique) qui n'affiche pas les rubriques de la racine et seulement celles de la langue choisie (c'est ce qu'il faut quand on a décidé d'avoir une langue par secteur):

01. <BOUCLE_rubriques_racine (RUBRIQUES) {racine}{lang}>
02. <BOUCLE_sous_rub (RUBRIQUES) {id_parent}{par num titre}>
03. [(#TITRE|supprimer_numero)]<br>
04. <BOUCLE_sous_sous_rub(RUBRIQUES) {id_parent}{par num titre}>
05. [(#TITRE|supprimer_numero)]<br>
06. </BOUCLE_sous_sous_rub>
07. </BOUCLE_sous_rub>
08. </BOUCLE_rubriques_racine>

mais ce que je comprends de ces boucles est contraire à ce que je croyais savoir... ma petite logique patine là-dessus:

- la ligne 01 prend toutes les rubriques d'une langue. ça c'est bon

Toutes les rubriques **à la racine** d'une langue pour être precis

- la ligne 02 prend les rubriques de 2ème niveau et la ligne 03 en affiche les titres (là je le vois bien mais la doc dit "{id_parent} retourne la liste des rubriques /contenues/ dans une rubrique." donc ici /toutes/ les rubriques quelles que soit leur profondeur et sauf les rubriques situées à la racine?)

Ici, {id_parent} retourne toutes les rubriques contenue dans la rubrique. Mais quelle rubrique à ton avis?

SPIP utilise le concept du contexte. Le contexte est fournis par les boucles englobantes. Dans notre cas, il va utiliser la variable id_rubrique du contexte actuel (vue que tu en fournis pas). Donc de la boucle rubrique englobante.

Donc:
- la boucle "sous_rub" utilise l'id de la rubrique fournie par "rubriques_racine".
- la boucle "sous_sous_rub" utilise l'id de la rubrique fournie par "sous_rub"

ça me parrait assez simple à comprendre en fin de compte :wink:

puisque de toute façon je n'arrive pas du tout à adapter ces boucles au menu de Nicolas Hoizey

Je ne connais pas parfaitement ce script, mais à vue d'oeuil, essai de remplacer:
<BOUCLE_secteurs(RUBRIQUES){id_parent=0}{par titre}>

par

<BOUCLE_secteurs (RUBRIQUES) {racine}{lang}>
<BOUCLE_rub_2eniveau (RUBRIQUES) {id_parent}>

et

</BOUCLE_secteurs>

par

</BOUCLE_secteurs>
</BOUCLE_rub_2eniveau>

Pierre

--
Andrews Pierre
pierre.andrews@epfl.ch
Eng. Computer Science
Swiss Federal Institute of Technology (EPFL)
http://6v8.gamboni.org

Il faut que tu jette un oeil à la base de données (à spip_rubriques). Chaque rubrique dispose d'un champ id_parent qui indique le numéro de la rubrique qui contient la rubrique considérée. Une valeur '0' indique que la rubrique est à la racine.

Donc le critère {id_parent} permet de rechercher toutes les rubriques dont le champ id_parent est égal à l'id_rubrique de l'environnement. Donc toutes les rubriques directement contenue dans la rubrique courante.

Olivier G.

Jean-Christophe Sekinger wrote:

que fait exactement {id_parent}?

Olivier GENDRIN a écrit :

Il faut que tu jette un oeil à la base de données (à spip_rubriques). Chaque rubrique dispose d'un champ id_parent qui indique le numéro de la rubrique qui contient la rubrique considérée. Une valeur '0' indique que la rubrique est à la racine.

Donc le critère {id_parent} permet de rechercher toutes les rubriques dont le champ id_parent est égal à l'id_rubrique de l'environnement. Donc toutes les rubriques directement contenue dans la rubrique courante.

oui c'est vrai, c'est très instructif... merci !

Je ne connais pas parfaitement ce script, mais à vue d'oeuil, essai de remplacer:
<BOUCLE_secteurs(RUBRIQUES){id_parent=0}{par titre}>

par

<BOUCLE_secteurs (RUBRIQUES) {racine}{lang}>
<BOUCLE_rub_2eniveau (RUBRIQUES) {id_parent}>

et

</BOUCLE_secteurs>

par

</BOUCLE_secteurs>
</BOUCLE_rub_2eniveau>

Pierre

voilà donc la solution d'Olivier Gendrin et la tienne intégrées au menu de Nicolas Hoizey... merci encore... on a vraiment besoin les uns des autres ! :slight_smile:
et merci pour le cours magistral et indulgent, j'espère être un bon élève !