Selection par plusieurs mots clefs optionnels

Bonjour,
J’ai associé à des articles plusieurs des mots clefs issus de trois groupes (type de public, type de manifestation, thématique) et je souhaiterais donner la possibilité au visiteur de séléctionner des articles en fonction des mots clefs éventuellement choisit dans chaque groupe (par exemple les articles ayant pour mot clef « grand public », « conférence » et « physique » OU ceux ayant pour mot clef « biologie » et « projection de films »).

Une boucle simple pour afficher les titres des articles correspondant aux 3 critères seraient (en supposant que le choix de l’utilisateur soit stocké dans une variable d’url) :

<BOUCLE_ville_ou_departement(RUBRIQUES){id_rubrique}>
<BOUCLE_manifestations(ARTICLES){branche}{par num titre}{id_mot=#ENV{public}}{id_mot=#ENV{manifestation}}{id_mot=#ENV{thematique}}>

#TITRE

Le problème de cette boucle est qu’elle ne fonctionne pas si une des variables d’URL n’est pas renseignée. Existe-t-il une solution pour rendre les critères optionnels s’ils ne sont pas renseignés ? Il existe bien le critère {id_mot ?} mais celui-ci ne s’applique pas dans ce cas.

Merci.

Jean-Baptiste Pressac a écrit :

Bonjour,
J'ai associé à des articles plusieurs des mots clefs issus de trois groupes (type de public, type de manifestation, thématique) et je souhaiterais donner la possibilité au visiteur de séléctionner des articles en fonction des mots clefs éventuellement choisit dans chaque groupe (par exemple les articles ayant pour mot clef "grand public", "conférence" et "physique" OU ceux ayant pour mot clef "biologie" et "projection de films").

Une boucle simple pour afficher les titres des articles correspondant aux 3 critères seraient (en supposant que le choix de l'utilisateur soit stocké dans une variable d'url) :

<BOUCLE_ville_ou_departement(RUBRIQUES){id_rubrique}>
    <BOUCLE_manifestations(ARTICLES){branche}{par num titre}{id_mot=#ENV{public}}{id_mot=#ENV{manifestation}}{id_mot=#ENV{thematique}}>
        <h2>#TITRE</h2>
    </BOUCLE_manifestations>
</BOUCLE_ville_ou_departement>

Le problème de cette boucle est qu'elle ne fonctionne pas si une des variables d'URL n'est pas renseignée. Existe-t-il une solution pour rendre les critères optionnels s'ils ne sont pas renseignés ? Il existe bien le critère {id_mot ?} mais celui-ci ne s'applique pas dans ce cas.

Merci.

Bonjour, j ai pas ce qu il faut sous la main pour verifier, mais tu peux essayer :
{id_mot==^#ENV{manifestation,.}} {id_mot==^#ENV{thematique,.}}
c est un test sur une expression reguliere, si env n existe pas il cherche sur . cad tout (enfin, c est comme ca que je comprends le systus)....
triton

Bonsoir, il y a une syntaxe que tu ne connais apparemment pas … Essaye ça :

<BOUCLE_manifestations(ARTICLES){branche}{par num titre}{id_mot IN #ENV{public}, #ENV{manifestation}, #ENV{thematique}}>
</BOUCLE_manifestations>

Le fait d’utiliser le IN permet, si l’un des tes #ENV est vide, de ne pas bloquer le résultat …

A+


Marc

Le 3 juin 09 à 16:53, Jean-Baptiste Pressac a écrit :

Bonjour,
J’ai associé à des articles plusieurs des mots clefs issus de trois groupes (type de public, type de manifestation, thématique) et je souhaiterais donner la possibilité au visiteur de séléctionner des articles en fonction des mots clefs éventuellement choisit dans chaque groupe (par exemple les articles ayant pour mot clef « grand public », « conférence » et « physique » OU ceux ayant pour mot clef « biologie » et « projection de films »).

Une boucle simple pour afficher les titres des articles correspondant aux 3 critères seraient (en supposant que le choix de l’utilisateur soit stocké dans une variable d’url) :

<BOUCLE_ville_ou_departement(RUBRIQUES){id_rubrique}>
<BOUCLE_manifestations(ARTICLES){branche}{par num titre}{id_mot=#ENV{public}}{id_mot=#ENV{manifestation}}{id_mot=#ENV{thematique}}>

#TITRE

Le problème de cette boucle est qu’elle ne fonctionne pas si une des variables d’URL n’est pas renseignée. Existe-t-il une solution pour rendre les critères optionnels s’ils ne sont pas renseignés ? Il existe bien le critère {id_mot ?} mais celui-ci ne s’applique pas dans ce cas.

Merci.

<jean-baptiste_pressac.vcf>_______________________________________________
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 ou http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip

C’est la bonne méthode en effet, merci !
Je n’avais pas percuté que le double == permettait d’utiliser une expression régulière.
J’ai juste modifié le critère de la façon suivante (noter les parenthèses autour de la balise #ENV) :
{id_mot==^(#ENV{manifestation,.})$}
de manière à distinguer le nombre 2 des nombres commençant par le chiffre 2

triton a écrit :

Jean-Baptiste Pressac a écrit :

Bonjour,
J’ai associé à des articles plusieurs des mots clefs issus de trois groupes (type de public, type de manifestation, thématique) et je souhaiterais donner la possibilité au visiteur de séléctionner des articles en fonction des mots clefs éventuellement choisit dans chaque groupe (par exemple les articles ayant pour mot clef « grand public », « conférence » et « physique » OU ceux ayant pour mot clef « biologie » et « projection de films »).

Une boucle simple pour afficher les titres des articles correspondant aux 3 critères seraient (en supposant que le choix de l’utilisateur soit stocké dans une variable d’url) :

<BOUCLE_ville_ou_departement(RUBRIQUES){id_rubrique}>
<BOUCLE_manifestations(ARTICLES){branche}{par num titre}{id_mot=#ENV{public}}{id_mot=#ENV{manifestation}}{id_mot=#ENV{thematique}}>

#TITRE

Le problème de cette boucle est qu’elle ne fonctionne pas si une des variables d’URL n’est pas renseignée. Existe-t-il une solution pour rendre les critères optionnels s’ils ne sont pas renseignés ? Il existe bien le critère {id_mot ?} mais celui-ci ne s’applique pas dans ce cas.

Merci.

Bonjour, j ai pas ce qu il faut sous la main pour verifier, mais tu peux essayer :
{id_mot==^#ENV{manifestation,.}} {id_mot==^#ENV{thematique,.}}
c est un test sur une expression reguliere, si env n existe pas il cherche sur . cad tout (enfin, c est comme ca que je comprends le systus)…
triton