récursivité et css

j'ai une boucle récursive qui me sert à afficher les rubriques et sous
rubriques, ainsi que les articles (visible ici ;
http://www.pouzy-mesangy.com/spip.php?rubrique2&var_mode=calcul

mon pb est que je n'arrive pas à trouver où appliquer les styles que je
veux... Par exemple sur la page citée on lit

Commerces et artisanat
Construction – Habitat – Immobilier
Maçonnerie, couverture

or on devrait lire

Commerces et artisanat
  Construction – Habitat – Immobilier
    Maçonnerie, couverture

car ce sont des sous-rubriques successives...

J'ai beau tâtonner je ne trouve pas la solution... Voici la boucle, si une
bonne âme pouvait me dire où mettre quels styles (mettons h2, h3, etc...)

<BOUCLE_secteurs(RUBRIQUES) {doublons} {id_rubrique} {!par lang} {par num
titre}{lang}>
  <B_articles_rubrique>
      <BOUCLE_articles_invisibles(ARTICLES) {doublons} {titre_mot=invisible} >
    </BOUCLE_articles_invisibles>
      <BOUCLE_articles_rubrique(ARTICLES) {id_rubrique} {par num titre}>
    </BOUCLE_articles_rubrique>
  </B_articles_rubrique>
    <B_rubriques>
    <BOUCLE_rubriques(RUBRIQUES) {id_parent} {par num titre}>
        <B_articles>
        <BOUCLE_articles(ARTICLES) {id_rubrique} {par titre}>
        </BOUCLE_articles>
      </B_articles>
        <BOUCLE_sous_rubriques(BOUCLE_rubriques)>
      </BOUCLE_sous_rubriques>
    </BOUCLE_rubriques>
  </B_rubriques>
</BOUCLE_secteurs>

merci d'avance

--
Cordialement, Daniel Cartron
« Je plains celui qui n'a pas été révolutionnaire à vingt ans : c'est qu'il
manque de coeur. Je plains celui qui est toujours révolutionnaire à quarante
ans: c'est qu'il manque de tête. »
George Bernard Shaw

* Daniel Cartron tapotait, le 12/06/2007 20:09:

j'ai une boucle récursive qui me sert à afficher les rubriques et sous rubriques, ainsi que les articles (visible ici ; http://www.pouzy-mesangy.com/spip.php?rubrique2&var_mode=calcul

mon pb est que je n'arrive pas à trouver où appliquer les styles que je veux... Par exemple sur la page citée on lit

Commerces et artisanat
Construction – Habitat – Immobilier
Maçonnerie, couverture

or on devrait lire

Commerces et artisanat
  Construction – Habitat – Immobilier
    Maçonnerie, couverture

car ce sont des sous-rubriques successives...

J'ai beau tâtonner je ne trouve pas la solution... Voici la boucle, si une bonne âme pouvait me dire où mettre quels styles (mettons h2, h3, etc...)

La manière classique de faire ça, c'est des ul li imbriqués
<B_Secteurs>
<ul>
<BOUCLE_Secteurs(RUBRIQUES){racine}>
<li><a href="#URL_ARTICLE">#TITRE</a>
<B_SsRubriques>
<ul>
<BOUCLE_SsRubriques(RUBRIQUES){id_parent}>
<li><a href="#URL_ARTICLE">#TITRE</a> <BOUCLE_RecursionRubriques(BOUCLE_SsRubriques)></BOUCLE_RecursionRubriques>
</li>
</BOUCLE_SsRubriques>
</ul>
</B_SsRubriques
</li>
</BOUCLE_Secteurs>
</ul>
</B__Secteurs>

--
RealET

pour arriver au résultat que tu présentes, les éléments d'entête ne sont pas adaptés à une sémantique structurante.
je te conseille d'utiliser des éléments de liste type <ul><li></li></ul> sur lesquels tu appliqueras des styles pour retirer les puces et contrôler les marges gauche.
de cette manière, si ta page est dégradée par une absence de css, ta structure sera conservée.

si tu rajoutes un <ul> à l'intérieur d'un autre <ul>, l'indentation se fera automatiquement.

tu n'as qu'à placer les <ul> et </ul> dans les zones facultatives et les <li> dans la boucle elle-même.

pour les css, il te faudra styler les éléments ul puis ul ul puis ul ul ul, etc. autant que tu as de niveaux.

Je te conseille également de commenter ton code (<!-- -->) de manière à savoir où se trouve chaque niveau de ta boucle.

Valentin

Le 12 juin 07 à 20:09, Daniel Cartron a écrit :

j'ai une boucle récursive qui me sert à afficher les rubriques et sous
rubriques, ainsi que les articles (visible ici ;
http://www.pouzy-mesangy.com/spip.php?rubrique2&var_mode=calcul

mon pb est que je n'arrive pas à trouver où appliquer les styles que je
veux... Par exemple sur la page citée on lit

Commerces et artisanat
Construction – Habitat – Immobilier
Maçonnerie, couverture

or on devrait lire

Commerces et artisanat
  Construction – Habitat – Immobilier
    Maçonnerie, couverture

car ce sont des sous-rubriques successives...

J'ai beau tâtonner je ne trouve pas la solution... Voici la boucle, si une
bonne âme pouvait me dire où mettre quels styles (mettons h2, h3, etc...)

<BOUCLE_secteurs(RUBRIQUES) {doublons} {id_rubrique} {!par lang} {par num
titre}{lang}>
  <B_articles_rubrique>
      <BOUCLE_articles_invisibles(ARTICLES) {doublons} {titre_mot=invisible} >
    </BOUCLE_articles_invisibles>
      <BOUCLE_articles_rubrique(ARTICLES) {id_rubrique} {par num titre}>
    </BOUCLE_articles_rubrique>
  </B_articles_rubrique>
    <B_rubriques>
    <BOUCLE_rubriques(RUBRIQUES) {id_parent} {par num titre}>
        <B_articles>
        <BOUCLE_articles(ARTICLES) {id_rubrique} {par titre}>
        </BOUCLE_articles>
      </B_articles>
        <BOUCLE_sous_rubriques(BOUCLE_rubriques)>
      </BOUCLE_sous_rubriques>
    </BOUCLE_rubriques>
  </B_rubriques>
</BOUCLE_secteurs>

merci d'avance

--
Cordialement, Daniel Cartron
« Je plains celui qui n'a pas été révolutionnaire à vingt ans : c'est qu'il
manque de coeur. Je plains celui qui est toujours révolutionnaire à quarante
ans: c'est qu'il manque de tête. »
George Bernard Shaw

_______________________________________________
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
FAQ : http://www.spip-contrib.net/spikini/FaQ

Le mardi 12 juin 2007 20:35, Valentin GUENICHON a écrit :

je te conseille d'utiliser des éléments de liste type <ul><li></li></
ul> sur lesquels tu appliqueras des styles pour retirer les puces et
contrôler les marges gauche.
de cette manière, si ta page est dégradée par une absence de css, ta
structure sera conservée.

ok j'avais l'intuition que c'était la solution mais avant de me lancer je
préférais demander. Donc encore une journée bien remplie demain, dommage il
devrait faire beau :frowning:

Je te conseille également de commenter ton code (<!-- -->) de manière
à savoir où se trouve chaque niveau de ta boucle.

alors ça c'est pas gagné de trouver le niveau...

--
Cordialement, Daniel Cartron
« Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne
le savait pas et qui l'a fait. »
Marcel Pagnol

Le mardi 12 juin 2007 20:24, RealET a écrit :

La manière classique de faire ça, c'est des ul li imbriqués

Merci à tous, je fais ça demain si je trouve le tps mais s'il fait vraiment
beau demain j'irai surement me faire un petit vol au dessus de Nevers. Qui
veut une photo aérienne de sa maison ? :-))

--
Cordialement, Daniel Cartron
« Je n'ai jamais volé que mes instants de chance,
Je n'ai jamais tué que le temps qui passait. »
Francis Blanche - Mon oursin et moi

Bonjour,

justre un truc sur le boucles récursives avec des balises html qui s'ouvrent et se ferment un peu partout sans qu'on sache plus où on est

je crée une page simple avec ma boucle et mon html (juste ce dont j'ai besoin, on peaufine et on injecte dans la page complète quand c'est au point)

et je fais

<B_Secteurs>
<ul 1>
<BOUCLE_Secteurs(RUBRIQUES){racine}>
<li 2><a href="#URL_ARTICLE" li2>#TITRE</a>
<B_SsRubriques>
<ul 3>
<BOUCLE_SsRubriques(RUBRIQUES){id_parent}>
<li 4><a href="#URL_ARTICLE" li4>#TITRE</a>
<BOUCLE_RecursionRubriques(BOUCLE_SsRubriques)></BOUCLE_RecursionRubriques>
</li 4>
</BOUCLE_SsRubriques>
</ul 3>
</B_SsRubriques
</li 2>
</BOUCLE_Secteurs>
</ul 1>
</B__Secteurs>

Evidemment ça passe pas au validateur :slight_smile:

Mais à la lecture du source généré, c'est redoutable d'efficacité pour retrouver ses petits !!!

qui plus est, en jouant avec get et set, tu peux aussi créer une variable incrémentée à chaque "récursion" que tu insères dans les balises html que tu veux tracer, pour savoir à quel niveau elles apparaissent !

NB
moi, je mets ces repères chiffrés dans les balises par habitude, mais évidemment, c'est plus orthodoxe de les mettre en dehors des balises
<ul>1
1</ul>

a+
RB