problème avec #EXPOSER

Bonjour,

Je souhaite réaliser un menu et utiliser #EXPOSER pour traiter différemment
l’article dans lequel on se trouve dans ce menu :

<BOUCLE_principale(RUBRIQUES){0,1}>

<BOUCLE_accueil(ARTICLES){id_rubrique}{0,1}>

<BOUCLE_ssNav(ARTICLES){id_rubrique}>

<p[ class="(#EXPOSER)"]>#TITRE


</BOUCLE_ssNav>
</BOUCLE_accueil>
</BOUCLE_principale>

Et bien cela ne marche pas… toutes mes tentatives n’ont abouti à rien, #EXPOSER est toujours vide…

Des idées ?

Merci,
Gilles

Salut,

Il te manque l'argument :

[(#EXPOSER|maclasse)]

cf. Exposer un article dans une liste - SPIP

#Olivier

fluxs wrote:

Bonjour,

Je souhaite réaliser un menu et utiliser #EXPOSER pour traiter différemment
l'article dans lequel on se trouve dans ce menu :

<!-- nous sommes dans la première rubrique -->
<BOUCLE_principale(RUBRIQUES){0,1}>
    <!-- nous sommes dans le permier article -->
        <BOUCLE_accueil(ARTICLES){id_rubrique}{0,1}>
        <!-- on boucle sur les articles de la première rubrique -->
        <BOUCLE_ssNav(ARTICLES){id_rubrique}>
            <!-- On n'attribue la classe "on" que lorsqu'on traite l'article dans lequel on se trouve -->
            <p[ class="(#EXPOSER)"]><a href="#URL_ARTICLE">#TITRE</a></p>
    </BOUCLE_ssNav>
    </BOUCLE_accueil>
</BOUCLE_principale>

Et bien cela ne marche pas... toutes mes tentatives n'ont abouti à rien, #EXPOSER est toujours vide...

Des idées ?

Merci,
Gilles

Dans l'article dont tu parles, il est écrit que l'argument n'est pas indispensable :
s'il est omis, le nom de la classe est "on" par défaut. Cela me va bien donc je n'ai
pas besoin de le préciser.

J'ai quand même essayé de le rajouter : [(#EXPOSER|on)] , mais évidemment ça ne
change rien...

Je pense qu'il doit y avoir un problème de contexte : SPIP a l'air de considérer
qu'il ne passe jamais sur un article à exposer...

Mais je ne vois pas quoi...

#Olivier wrote:

Salut,

Il te manque l'argument :

[(#EXPOSER|maclasse)]

cf. Exposer un article dans une liste - SPIP

#Olivier

fluxs wrote:

Bonjour,

Je souhaite réaliser un menu et utiliser #EXPOSER pour traiter différemment
l'article dans lequel on se trouve dans ce menu :

<!-- nous sommes dans la première rubrique -->
<BOUCLE_principale(RUBRIQUES){0,1}>
    <!-- nous sommes dans le permier article -->
        <BOUCLE_accueil(ARTICLES){id_rubrique}{0,1}>
        <!-- on boucle sur les articles de la première rubrique -->
        <BOUCLE_ssNav(ARTICLES){id_rubrique}>
            <!-- On n'attribue la classe "on" que lorsqu'on traite l'article dans lequel on se trouve -->
            <p[ class="(#EXPOSER)"]><a href="#URL_ARTICLE">#TITRE</a></p>
    </BOUCLE_ssNav>
    </BOUCLE_accueil>
</BOUCLE_principale>

Et bien cela ne marche pas... toutes mes tentatives n'ont abouti à rien, #EXPOSER est toujours vide...

Des idées ?

Merci,
Gilles

_______________________________________________
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

Effectivement, tu as raison.

Cependant, il me semble que dans ton cas, la balise #EXPOSER ne fonctionne logiquement que pour un squelette d'article (je ne sais pas à quoi tu t'attends comme comportement):

<BOUCLE_article_principal(ARTICLES){id_article}>
</BOUCLE_article_principal>

et pas dans un squelette de rubrique. Avec ta boucle, il semble normal que #EXPOSER ne retourne rien.

#Olivier

fluxs wrote:

Dans l'article dont tu parles, il est écrit que l'argument n'est pas indispensable :
s'il est omis, le nom de la classe est "on" par défaut. Cela me va bien donc je n'ai
pas besoin de le préciser.

J'ai quand même essayé de le rajouter : [(#EXPOSER|on)] , mais évidemment ça ne
change rien...

Je pense qu'il doit y avoir un problème de contexte : SPIP a l'air de considérer
qu'il ne passe jamais sur un article à exposer...

Mais je ne vois pas quoi...

#Olivier wrote:

Salut,

Il te manque l'argument :

[(#EXPOSER|maclasse)]

cf. Exposer un article dans une liste - SPIP

#Olivier

fluxs wrote:

Bonjour,

Je souhaite réaliser un menu et utiliser #EXPOSER pour traiter différemment
l'article dans lequel on se trouve dans ce menu :

<!-- nous sommes dans la première rubrique -->
<BOUCLE_principale(RUBRIQUES){0,1}>
    <!-- nous sommes dans le permier article -->
        <BOUCLE_accueil(ARTICLES){id_rubrique}{0,1}>
        <!-- on boucle sur les articles de la première rubrique -->
        <BOUCLE_ssNav(ARTICLES){id_rubrique}>
            <!-- On n'attribue la classe "on" que lorsqu'on traite l'article dans lequel on se trouve -->
            <p[ class="(#EXPOSER)"]><a href="#URL_ARTICLE">#TITRE</a></p>
    </BOUCLE_ssNav>
    </BOUCLE_accueil>
</BOUCLE_principale>

Et bien cela ne marche pas... toutes mes tentatives n'ont abouti à rien, #EXPOSER est toujours vide...

Des idées ?

Merci,
Gilles

_______________________________________________
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

Voilà comment je vois les choses, mais apparemment je me goure :

- La boucle "accueil" (ARTICLES) me permet de sélectionner le premier article de la rubrique.
J'ai donc dans le contexte de cette boucle un id_article égal à celui du premier article.

- La boucle "ssNav" (ARTICLES aussi) me permet de boucler sur tous les articles de la rubrique,
et ce que j'imaginais, c'est que #EXPOSER réagissait lorsqu'il rencontrait un article déjà présent
dans le contexte.

Mais apparemment non.

Sinon j'ai modifié mes boucles pour ne plus avoir de boucle RUBRIQUE, mais ça ne marche toujours pas :
<!-- On se place dans le premier article de la rubrique 1 -->
<BOUCLE_accueil(ARTICLES){id_rubrique=1}{0,1}>
    <-- on boucle sur les articles de la rubrique 1 -->
    <BOUCLE_ssNav(ARTICLES){id_rubrique}{titre_mot=sous_nav}>
        <p[ class="(#EXPOSER)"]><a href="#URL_ARTICLE">#TITRE</a></p>
    </BOUCLE_ssNav>
</BOUCLE_accueil>

Je pense que ce qui cloche, c'est que je n'ai pas, comme tu le dis de {id_article} dans ma boucle accueil.

Mais en fait je ne peux pas récupérer un id_article dans l'URL car ils s'agit de la page d'accueil de la rubrique,
dont le contenu est celui du premier article de la rubrique.

Du coup j'ai essayé d'ajouter une boucle premierArticle pour passer l'id_article :

    <INCLURE(entete.php3){id_rubrique=1}>
    <BOUCLE_accueil(ARTICLES){id_rubrique=1}{0,1}>
       <!-- boucle pour essayer de passer l'id_article -->
        <BOUCLE_premierArticle(ARTICLES){id_article}>
            <BOUCLE_ssNav(ARTICLES){id_rubrique}{titre_mot=sous_nav}>
                    <p[ class="(#EXPOSER)"]><a href="#URL_ARTICLE">#TITRE</a></p>
            </BOUCLE_ssNav>
        </BOUCLE_premierArticle>
    </BOUCLE_accueil>

Mais ça ne marche toujours pas...

Je ne comprends pas ce qui cloche..

#Olivier wrote:

Effectivement, tu as raison.

Cependant, il me semble que dans ton cas, la balise #EXPOSER ne fonctionne logiquement que pour un squelette d'article (je ne sais pas à quoi tu t'attends comme comportement):

<BOUCLE_article_principal(ARTICLES){id_article}>
</BOUCLE_article_principal>

et pas dans un squelette de rubrique. Avec ta boucle, il semble normal que #EXPOSER ne retourne rien.

#Olivier

fluxs wrote:

Dans l'article dont tu parles, il est écrit que l'argument n'est pas indispensable :
s'il est omis, le nom de la classe est "on" par défaut. Cela me va bien donc je n'ai
pas besoin de le préciser.

J'ai quand même essayé de le rajouter : [(#EXPOSER|on)] , mais évidemment ça ne
change rien...

Je pense qu'il doit y avoir un problème de contexte : SPIP a l'air de considérer
qu'il ne passe jamais sur un article à exposer...

Mais je ne vois pas quoi...

#Olivier wrote:

Salut,

Il te manque l'argument :

[(#EXPOSER|maclasse)]

cf. Exposer un article dans une liste - SPIP

#Olivier

fluxs wrote:

Bonjour,

Je souhaite réaliser un menu et utiliser #EXPOSER pour traiter différemment
l'article dans lequel on se trouve dans ce menu :

<!-- nous sommes dans la première rubrique -->
<BOUCLE_principale(RUBRIQUES){0,1}>
    <!-- nous sommes dans le permier article -->
        <BOUCLE_accueil(ARTICLES){id_rubrique}{0,1}>
        <!-- on boucle sur les articles de la première rubrique -->
        <BOUCLE_ssNav(ARTICLES){id_rubrique}>
            <!-- On n'attribue la classe "on" que lorsqu'on traite l'article dans lequel on se trouve -->
            <p[ class="(#EXPOSER)"]><a href="#URL_ARTICLE">#TITRE</a></p>
    </BOUCLE_ssNav>
    </BOUCLE_accueil>
</BOUCLE_principale>

Et bien cela ne marche pas... toutes mes tentatives n'ont abouti à rien, #EXPOSER est toujours vide...

Des idées ?

Merci,
Gilles

_______________________________________________
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

_______________________________________________
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

--
*Gilles Lévy - potentionet*
Développeur web freelance : Flash / php / mySQL ...
14, rue Dupont de l'Eure 75020 Paris
Tel. 01.40.31.34.77
http://www.potentio.net

fluxs wrote:

Bonjour,

Je souhaite réaliser un menu et utiliser #EXPOSER pour traiter différemment
l'article dans lequel on se trouve dans ce menu :

<!-- nous sommes dans la première rubrique -->
<BOUCLE_principale(RUBRIQUES){0,1}>
    <!-- nous sommes dans le permier article -->
        <BOUCLE_accueil(ARTICLES){id_rubrique}{0,1}>
        <!-- on boucle sur les articles de la première rubrique -->
        <BOUCLE_ssNav(ARTICLES){id_rubrique}>
            <!-- On n'attribue la classe "on" que lorsqu'on traite l'article dans lequel on se trouve -->
            <p[ class="(#EXPOSER)"]><a href="#URL_ARTICLE">#TITRE</a></p>
    </BOUCLE_ssNav>
    </BOUCLE_accueil>
</BOUCLE_principale>

Et bien cela ne marche pas... toutes mes tentatives n'ont abouti à rien, #EXPOSER est toujours vide...

Des idées ?

Merci,
Gilles

OK, d'après moi, #EXPOSER ne fonctionne que pour des boucles directement continues, ce qui fait que ce que tu cherche à faire est trop complexe (en gros, je pense que cette balise regarde l'environnement de la boucle qui le contient).

Donc, dans le cas que tu présente, et si j'ai raison, tu devrais avoir class="on" pour tous les articles, ou un article au hasard dans la rubrique. En gros, tu cherche à faire trop compliqué.

--

Olivier G.
http://talath.no-ip.info/~carmine/blog/dotclear/index.php/

(Re)

Gilles Levy wrote:

Voilà comment je vois les choses, mais apparemment je me goure :

- La boucle "accueil" (ARTICLES) me permet de sélectionner le premier article de la rubrique.
J'ai donc dans le contexte de cette boucle un id_article égal à celui du premier article.

- La boucle "ssNav" (ARTICLES aussi) me permet de boucler sur tous les articles de la rubrique,
et ce que j'imaginais, c'est que #EXPOSER réagissait lorsqu'il rencontrait un article déjà présent
dans le contexte.

Mais apparemment non.

Sinon j'ai modifié mes boucles pour ne plus avoir de boucle RUBRIQUE, mais ça ne marche toujours pas :
<!-- On se place dans le premier article de la rubrique 1 -->
<BOUCLE_accueil(ARTICLES){id_rubrique=1}{0,1}>
   <-- on boucle sur les articles de la rubrique 1 -->
   <BOUCLE_ssNav(ARTICLES){id_rubrique}{titre_mot=sous_nav}>
       <p[ class="(#EXPOSER)"]><a href="#URL_ARTICLE">#TITRE</a></p>
   </BOUCLE_ssNav>
</BOUCLE_accueil>

Je pense que ce qui cloche, c'est que je n'ai pas, comme tu le dis de {id_article} dans ma boucle accueil.

En effet, je pense que tu fais une confusion sur le « contexte » et sur le fonctionnement de la balise #EXPOSER.

#EXPOSER ne fonctionne pas sur le modèle du critère {doublons} mais fonctionne dans le cas de boucles imbriquées (et non juxtaposées).

Exemple avec article.html (*on suppose que l'on consulte id_article=5)

Ici, #EXPOSER fonctionne et l'article id_article=5 va être exposé

<BOUCLE_article_principal(ARTICLES){id_article}>

<BOUCLE_articles_complementaires(ARTICLES){id_article=^(1|2|3|4|5)$}>
<a href="(#URL_ARTICLE)"[ class="(#EXPOSER)"]>#TITRE</a>
</BOUCLE_articles_complementaires

</BOUCLE_article_principal>

Ici, #EXPOSER ne retourne rien* :

<BOUCLE_article_principal(ARTICLES){id_article}>
</BOUCLE_article_principal>

<BOUCLE_articles_complementaires(ARTICLES){id_article=^(1|2|3|4|5)$}>
<a href="(#URL_ARTICLE)"[ class="(#EXPOSER)"]>#TITRE</a>
</BOUCLE_articles_complementaires

A+

#Olivier

Mais en fait je ne peux pas récupérer un id_article dans l'URL car ils s'agit de la page d'accueil de la rubrique,
dont le contenu est celui du premier article de la rubrique.

Du coup j'ai essayé d'ajouter une boucle premierArticle pour passer l'id_article :

   <INCLURE(entete.php3){id_rubrique=1}>
   <BOUCLE_accueil(ARTICLES){id_rubrique=1}{0,1}>
      <!-- boucle pour essayer de passer l'id_article -->
       <BOUCLE_premierArticle(ARTICLES){id_article}>
           <BOUCLE_ssNav(ARTICLES){id_rubrique}{titre_mot=sous_nav}>
                   <p[ class="(#EXPOSER)"]><a href="#URL_ARTICLE">#TITRE</a></p>
           </BOUCLE_ssNav>
       </BOUCLE_premierArticle>
   </BOUCLE_accueil>

Mais ça ne marche toujours pas...

Je ne comprends pas ce qui cloche..

Bon,

Je pense que je vais changer la conception de ma page : il s'agit d'une page rubrique,
mais qui n'a rien de différent de toutes les pages articles de la rubrique. C'est pour
cela que je n'ai pas dans l'url d'id_article, je force le contenu à être le premier article de la rubrique.

Je vais abandonner cette page rubrique et pointer comme première page de la rubrique sur
une page article, en passant le bon id_article à la page.

Je suis en train de réaliser que si je fais cela, du coup il faut que je passe en dur l'id_article
du premier article... ça m'ennuie. Je pourrais faire une boucle ARTICLES basée sur l'id_article,
et si aucun id_article n'est passé, la boucle ne renvoie aucun résultat, donc dans la partie <//Bn>
de la boucle je mets une boucle qui récupére le premier article, et qui "expose" à la main le premier article.

Ca me paraît un peut compliqué mais je ne vois pas d'autre solution.

En effet, je pense que tu fais une confusion sur le « contexte » et sur le fonctionnement de la balise #EXPOSER.

#EXPOSER ne fonctionne pas sur le modèle du critère {doublons} mais fonctionne dans le cas de boucles imbriquées (et non juxtaposées).

Exemple avec article.html (*on suppose que l'on consulte id_article=5)

Ici, #EXPOSER fonctionne et l'article id_article=5 va être exposé

<BOUCLE_article_principal(ARTICLES){id_article}>

<BOUCLE_articles_complementaires(ARTICLES){id_article=^(1|2|3|4|5)$}>
<a href="(#URL_ARTICLE)"[ class="(#EXPOSER)"]>#TITRE</a>
</BOUCLE_articles_complementaires

</BOUCLE_article_principal>

Ici, #EXPOSER ne retourne rien* :

<BOUCLE_article_principal(ARTICLES){id_article}>
</BOUCLE_article_principal>

<BOUCLE_articles_complementaires(ARTICLES){id_article=^(1|2|3|4|5)$}>
<a href="(#URL_ARTICLE)"[ class="(#EXPOSER)"]>#TITRE</a>
</BOUCLE_articles_complementaires

A+

#Olivier

Mais en fait je ne peux pas récupérer un id_article dans l'URL car ils s'agit de la page d'accueil de la rubrique,
dont le contenu est celui du premier article de la rubrique.

Du coup j'ai essayé d'ajouter une boucle premierArticle pour passer l'id_article :

   <INCLURE(entete.php3){id_rubrique=1}>
   <BOUCLE_accueil(ARTICLES){id_rubrique=1}{0,1}>
      <!-- boucle pour essayer de passer l'id_article -->
       <BOUCLE_premierArticle(ARTICLES){id_article}>
           <BOUCLE_ssNav(ARTICLES){id_rubrique}{titre_mot=sous_nav}>
                   <p[ class="(#EXPOSER)"]><a href="#URL_ARTICLE">#TITRE</a></p>
           </BOUCLE_ssNav>
       </BOUCLE_premierArticle>
   </BOUCLE_accueil>

Mais ça ne marche toujours pas...

Je ne comprends pas ce qui cloche..

_______________________________________________
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

--
*Gilles Lévy - potentionet*
Développeur web freelance : Flash / php / mySQL ...
14, rue Dupont de l'Eure 75020 Paris
Tel. 01.40.31.34.77
http://www.potentio.net

Pas sûr d'avoir digéré tous les aspects...
Pour déterminer l'article qui sert de point d'entrée à ta rubrique, tu ne
préfères pas le marquer par un mot-clé plutôt que de mettre son id_article
en dur dans ton squelette ?

A+
Christian

Oui c’est pas con… dans le cas où on utilise un squelette « rubrique ».
Mais dans ce cas, on ne passera pas l’id_article dans l’URL est du coup
#EXPOSER ne réagira pas sur cet article dans le menu.

Du coup ce que j’ai fait, c’est de créer une Rubrique « Interface » dans laquelle je défini
le lien vers chaque rubrique dans un des champs texte (desrciptif dans mon cas),
par exemple le lien vers la rubrique 2 est « article.php3?id_article=6 ».

C’est une solution un peu bricolée, mais ça donne de la souplesse : on peut choisir
depuis SPIP quel article est la page d’accueil de la rubrique.

…et EXPOSER marche parce que je passe toujours l’id_article dans l’URL

Ah j’oublie de dire qu’il faut filtrer le champ qui contient l’URL avant de l’utiliser
comme lien, pour supprimer le   que SPIP ajoute automatiquement avant le « ? »

Tiens ce qui est cool aussi, c’est que dans mon menu, après avoir bouclé sur les
articles de la rubrique, je boucle sur les sous-rubriques. Et bien EXPOSER marche aussi
avec les sous-rubriques ! Lorsque je me trouve dans le gabarit de la sous-rubrique
et que l’on passe le paramètre id_rubrique, la sous-rubrique correspondante s’affiche
« on » dans le menu.

La présentation d’EXPOSER dans la doc SPIP parle de l’intérêt de pouvoir exposer les
articles, mais il y est écrit « les objets à exposer », et apparemment « les objets » ça doit pouvoir
marcher avec toutes les boucles…

Christian Quentin wrote: