boucle avec fusion mot et alternative

J'ai du mal avec une boucle sur des produits d'un panier : je cherche à afficher un texte si au moins 1 produit a un mot clé X et un autre texte si aucun produit n'a le mot clé X.

Voilà ce que j'ai et qui ne fonctionne pas :

<BOUCLE_panier(PANIERS){id_panier=#SESSION{id_panier}}> <BOUCLE_prod(spip_paniers_liens produits){objet=produit}{id_panier=#SESSION{id_panier}}>
<BOUCLE_produit(PRODUITS){id_produit}{id_mot=2}{fusion id_mot}>
un texte
</BOUCLE_produit>
un autre texte
<//B_produit>
</BOUCLE_prod>
</BOUCLE_panier>

ceci me retourne autant de fois qu'il y a de produits le "un texte" alors que je n'en veut qu'1
je dois mal utiliser "fusion_id_mot"

et cela me retourne aussi le "un autre texte" dans tous les cas alors que je le veux uniquement si la boucle PRODUITS ne retourne rien.

si quelqu'un peut me corriger.
Merci

il y a une boucle en trop je dirai je tenterai un {produit.id_mot=2} sur la boucle prod

ou sinon dans la boucle produit il faudra specifier l’id_produit
{id_produit=#ID_OBJET}

Le mar. 12 mars 2019 à 11:51, dd <lemotjuste@free.fr> a écrit :

J’ai du mal avec une boucle sur des produits d’un panier : je cherche à
afficher un texte si au moins 1 produit a un mot clé X et un autre texte
si aucun produit n’a le mot clé X.

Voilà ce que j’ai et qui ne fonctionne pas :

<BOUCLE_panier(PANIERS){id_panier=#SESSION{id_panier}}>
<BOUCLE_prod(spip_paniers_liens
produits){objet=produit}{id_panier=#SESSION{id_panier}}>
<BOUCLE_produit(PRODUITS){id_produit}{id_mot=2}{fusion id_mot}>
un texte
</BOUCLE_produit>
un autre texte
<//B_produit>
</BOUCLE_prod>
</BOUCLE_panier>

ceci me retourne autant de fois qu’il y a de produits le « un texte »
alors que je n’en veut qu’1
je dois mal utiliser « fusion_id_mot »

et cela me retourne aussi le « un autre texte » dans tous les cas alors
que je le veux uniquement si la boucle PRODUITS ne retourne rien.

si quelqu’un peut me corriger.
Merci


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

En essayant de comprendre ce que tu souhaites afficher, je pense que des boucles du genre seraient satisfaisantes:

<BOUCLE_prod(spip_paniers_liens produits){objet=produit}{id_panier=#SESSION{id_panier}}>
    <BOUCLE_produit_mc(PRODUITS){id_produit=#ID_OBJET}{id_mot=2}>
        produit du panier avec mc: #TITRE<br>
    </BOUCLE_produit_mc>
    <BOUCLE_produit(PRODUITS){id_produit=#ID_OBJET}{id_mot!=2}>
        produit du panier sans mc: #TITRE<br>
    </BOUCLE_produit>
</BOUCLE_prod>

Le mar. 12 mars 2019 à 12:57, pierre laszczak <pierre.laszczak@gmail.com> a écrit :

il y a une boucle en trop je dirai je tenterai un {produit.id_mot=2} sur la boucle prod

ou sinon dans la boucle produit il faudra specifier l’id_produit
{id_produit=#ID_OBJET}

Le mar. 12 mars 2019 à 11:51, dd <lemotjuste@free.fr> a écrit :

J’ai du mal avec une boucle sur des produits d’un panier : je cherche à
afficher un texte si au moins 1 produit a un mot clé X et un autre texte
si aucun produit n’a le mot clé X.

Voilà ce que j’ai et qui ne fonctionne pas :

<BOUCLE_panier(PANIERS){id_panier=#SESSION{id_panier}}>
<BOUCLE_prod(spip_paniers_liens
produits){objet=produit}{id_panier=#SESSION{id_panier}}>
<BOUCLE_produit(PRODUITS){id_produit}{id_mot=2}{fusion id_mot}>
un texte
</BOUCLE_produit>
un autre texte
<//B_produit>
</BOUCLE_prod>
</BOUCLE_panier>

ceci me retourne autant de fois qu’il y a de produits le « un texte »
alors que je n’en veut qu’1
je dois mal utiliser « fusion_id_mot »

et cela me retourne aussi le « un autre texte » dans tous les cas alors
que je le veux uniquement si la boucle PRODUITS ne retourne rien.

si quelqu’un peut me corriger.
Merci


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : https://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Le 12/03/2019 à 11:50, dd a écrit :

<BOUCLE_produit(PRODUITS){id_produit}{id_mot=2}{fusion id_mot}>

Je testerais plutôt :

<BOUCLE_produit(PRODUITS){id_produit}{id_mot=2}{0,1}>

pour limiter au premier résultat.

--
nicod_

On 12/03/2019 13:42, nicod_ wrote:

Le 12/03/2019 à 11:50, dd a écrit :

<BOUCLE_produit(PRODUITS){id_produit}{id_mot=2}{fusion id_mot}>

Je testerais plutôt :

<BOUCLE_produit(PRODUITS){id_produit}{id_mot=2}{0,1}>

pour limiter au premier résultat.

Non plus (mais je le sens moins seule..)
J'ai "produit du panier sans mc1: #TITRE<br>" qui s'affiche dans tous les cas.
Je continue à investiguer cette bizarrerie.

On 12/03/2019 15:33, dd wrote:

On 12/03/2019 13:42, nicod_ wrote:

Le 12/03/2019 à 11:50, dd a écrit :

<BOUCLE_produit(PRODUITS){id_produit}{id_mot=2}{fusion id_mot}>

Je testerais plutôt :

<BOUCLE_produit(PRODUITS){id_produit}{id_mot=2}{0,1}>

pour limiter au premier résultat.

Non plus (mais je le sens moins seule..)
J'ai "produit du panier sans mc1: #TITRE<br>" qui s'affiche dans tous les cas.
Je continue à investiguer cette bizarrerie.

Je donne la solution :

<BOUCLE_prod(spip_paniers_liens produits){objet=produit} {id_panier=#SESSION{id_panier}}{0,1}>
<BOUCLE_produit_mc(PRODUITS){id_produit=#ID_OBJET}{id_mot=2}{0,1}>
produit du panier avec mc2: #TITRE<br>
</BOUCLE_produit_mc>
<BOUCLE_produit(PRODUITS){id_produit=#ID_OBJET}{id_mot!=2}>
produit du panier sans mc1: #TITRE<br>
</BOUCLE_produit>
</BOUCLE_prod>

donc le {0,1} dans la 1e boucle fait toute la différence.

Le 12/03/2019 à 19:01, dd a écrit :

Je donne la solution :

<BOUCLE_prod(spip_paniers_liens produits){objet=produit} {id_panier=#SESSION{id_panier}}{0,1}>
<BOUCLE_produit_mc(PRODUITS){id_produit=#ID_OBJET}{id_mot=2}{0,1}>
produit du panier avec mc2: #TITRE<br>
</BOUCLE_produit_mc>
<BOUCLE_produit(PRODUITS){id_produit=#ID_OBJET}{id_mot!=2}>
produit du panier sans mc1: #TITRE<br>
</BOUCLE_produit>
</BOUCLE_prod>

Peut être simplifier en utlisant une partie <//B_produit_mc> à la place de la <BOUCLE_produit> ?

JL