Trouver la "dernière" rubrique

Salut,

je cherche à déterminer si une rubrique contient au moins un article ou seulement une ou des sous-rubriques. Cela me sert à ajouter une classe au lien #URL_RUBRIQUE de la rubrique de dernier niveau de mon menu (celle qui ne contient pas de sous-rubrique) pour la cibler avec un script jQuery.

Pas facile à expliquer… un exemple:

Rubrique A
Sous rubrique A1
Sous sous rubrique A1a
Sous sous rubrique A1b
Sous rubrique A2
Sous sous rubrique A2a
Sous sous rubrique A2b
Sous rubrique A3
Sous rubrique A4

Dans cet exemple, les rubrique que je cherche à cibler sont:
Sous sous rubrique A1a
Sous sous rubrique A1b
Sous sous rubrique A2a
Sous sous rubrique A2b
Sous rubrique A3
Sous rubrique A4

Donc, j’ai utilisé #TOTAL_BOUCLE dans un une boucle article (en rouge ci-dessous) pour compter le nombre d’articles et, si ce total est différent de 0, je mets la classe dernier:

<BOUCLE_sous_rubriques(RUBRIQUES) {id_parent} {par num titre, titre}>

  • <a href="#URL_RUBRIQUE"[ (#TOTAL_BOUCLE|!={0}|?{class="dernier"," "})]>#TITRE
  • Voir par là pour la version "coloration syntaxique": Le problème, c'est que si j'ai 3 articles dans ma rubrique, ben je récupère 3 fois class="dernier" dans mon code... ça marche, mais c'est moche (et pas standard accessoirement). Donc, j'ai pensé mettre ce #TOTAL_BOUCLE dans une variable avec #SET, mais ça ne marche pas et, comme je ne maitrise pas trop le #SET/#GET, je rame... Si vous avez une idée, je suis preneur. jean marie PS: merci d'avoir lu ce mail (beaucoup trop long) jusqu'ici PS2: bravo si vous avez compris ce mail incompréhensible du 1er coup
  • Bonsoir,

    Quand on fait un #TOTAL_BOUCLE, on le met entre un </BOUCLE_nomdelaboucle> et </B_nomdelaboucle>

    cf. http://zone.spip.org/trac/spip-zone/browser/squelettes/spipr-dist/trunk/content/article.html#L24
    Et surtout : http://www.spip.net/fr_article4334.html#TOTAL_BOUCLE

    Bonjour,

    Le 19/03/2013 22:32, Jean Marie Grall a écrit :

    je cherche à déterminer si une rubrique contient au moins un article ou
    seulement une ou des sous-rubriques.
    Pas facile à expliquer... un exemple:

    _*Rubrique A*_
    *Sous rubrique A1*
          Sous sous rubrique A1a
          Sous sous rubrique A1b
    *Sous rubrique A2*
          Sous sous rubrique A2a
          Sous sous rubrique A2b
    * Sous rubrique A3*
    * Sous rubrique A4*

    Dans cet exemple, les rubrique que je cherche à cibler sont:
    Sous sous rubrique A1a
    Sous sous rubrique A1b
    Sous sous rubrique A2a
    Sous sous rubrique A2b
    Sous rubrique A3
    Sous rubrique A4

    Pour les rubriques, ne serait-ce pas le critère {feuille} ?

    --
    Stéphane

    BTS Electrotechnique *** http://enselec.santonum.eu
    Les Voisins Spipeurs * http://www.voisins-spipeurs.net

    Hum…
    Ah bien y réfléchir, pas la peine de faire un #TOTAL_BOUCLE
    Le but étant d’afficher la classe si j’ai au moins 1 article dans ma rubrique…

    Alors… on peut juste faire ça :
    <BOUCLE_compteur_articles(ARTICLES){id_rubrique}{0,1}> </BOUCLE_compteur_articles>class=« dernier »</B_compteur_articles><//B

    Important : ne pas oublier de mettre un espace « vide » dans <BOUCLE_compteur_articles></BOUCLE_compteur_articles>
    C’est pour avoir un « retour » de ma boucle (un élément à « afficher »).

    Sinon, si sur votre site, vous avez SPIP Bonux, vous pouvez utiliser le critère compteur et la balise #COMPTEUR

    <BOUCLE_sous_rubriques(RUBRIQUES) {compteur articles} {id_parent}{par num titre, titre}>

  • {0}|oui)class='dernier']>#TITRE
  • cf. paragraphe « un critère compteur » http://contrib.spip.net/SPIP-Bonux

    Spipement,

    Ybbet

    Le 19/03/2013 22:32, Jean Marie Grall a écrit :

    Salut,

    je cherche à déterminer si une rubrique contient au moins un article ou
    seulement une ou des sous-rubriques. Cela me sert à ajouter une classe
    au lien #URL_RUBRIQUE de la rubrique de dernier niveau de mon menu
    (celle qui ne contient pas de sous-rubrique) pour la cibler avec un
    script jQuery.

    Tu cherche donc le dernier élément ne contenant pas de ul.
    Tu cherche à cibler pour jquery, utilise donc jquery.

    Je me demande si un truc du genre:

    $(".menu li:not(:has(ul)").addClass("dernier"); ne ferais pas l'affaire.

    Denis

    Salut,

    merci Ybbet et Stéphane pour vos réponses...

    Le petit détail dans ma demande est que je veux afficher toutes les
    rubriques, avec ou sans sous-rubriques, et ne cibler que celles qui
    n'ont pas de sous rubriques via une classe. Or, si on utilise {feuille}
    ou {compteur articles} dans la BOUCLE_sous_rubriques, ça ne renvoie que
    les rubriques n'ayant aucune sous rubrique.

    Du coup, j'ai utilisé la balise #COMPTEUR de SPIP Bonux (que j'installe
    de base sur tous mes SPIP), mais dans <BOUCLE_compteur_article> à
    l'intérieur de <BOUCLE_sous_rubriques>:

    <BOUCLE_sous_rubriques(RUBRIQUES) {id_parent} {par num titre, titre}>
      <li class="menu-entree">
         <a href="#URL_RUBRIQUE"<BOUCLE_compteur_article(ARTICLES){compteur
    articles}{id_rubrique}>[(#COMPTEUR{articles}|>{0}|oui)class='dernier']</BOUCLE_compteur_article>>[(#TITRE|couper{80})]</a>
      </li>
      <B_re><li
    class="menu-liste[(#EXPOSE)]"><BOUCLE_re(BOUCLE_sous_rubriques)></BOUCLE_re></li></B_re>
    </BOUCLE_sous_rubriques>

    CF: spip pastebin - outil de debug collaboratif - Bonjour les écureuils !

    Ca fonctionne nickel, merci...

    jean marie

    --
    CousuMain
    ...par les gars des Internettes
    Création de sites et d'outils pour le web
    www.cousumain.info