Je souhaite obtenir une liste d'articles, réduite à ceux qui sont associés à un mot-clé si celui-ci est passé dans l'url.
J'ai écrit :
<BOUCLE_tests(ARTICLES) {id_rubrique} {id_mot=#ENV{categorie}} {par date} {inverse} {0,5}>
Lorsque le mot est spécifié dans l'url tout va bien. Par contre, lorsque rien n'est spécifié, la liste affiché par la boucle est vide puisque le critère devient {id_mot=}, c'est à dire aucun article n'est associé à ce mot inexistant.
Je ne trouve pas de solution pour relacher le critère lorsque aucune variable d'environnement n'est passée. Et [(#ENV{…})] n'est pas possible dans une boucle, dommage… La solution du "sinon" ne convient pas non plus parce qu'il faut que tout soit affiché s'il n'y a rien.
Cela fonctionne mais je ne vois que 4 articles dans la boucle alors qu'il y a le critère {0,5} et la rubrique contient 9 articles.
L'ensemble de la boucle (plusieurs paramètres possibles) :
<BOUCLE_actu1(ARTICLES){branche}{id_mot==^(#ENV{categorie,.})$}{id_mot==^(#ENV{cylindree,.})$}{id_mot==^(#ENV{marque,.})$}{doublons}{par date}{inverse}{0,5}>
Et je ne comprends pas très bien le sens du critère :
si pas de paramètre, prendre les articles pour lesquels id_mot contient (point) ???
Le (point) signifie qu'il n'y a pas de valeur ?
Le 3 mars 09 à 16:39, denisb a écrit :
Pascale a écrit :
La solution du "sinon" ne convient pas non plus parce qu'il faut que tout soit affiché s'il n'y a rien.
mais si, mais si :
{id_mot==^(#ENV{categorie,.})$}
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Cela fonctionne mais je ne vois que 4 articles dans la boucle
si tu fait :
<BOUCLE_actu1(ARTICLES) {branche}
{doublons}
{par date}
{inverse}
{0,5}>
ça te renvoie les enregistrements 5 par 5 ?
Et je ne comprends pas très bien le sens du critère :
on utilise une regexp.
on cherche sur id_mot si id_mot est :
1 renseigné
2 qu'il commence litéralement par #ENV{categorie}
3 qu'il finisse litéralement par #ENV{catégorie}
(donc qu'il soit strictement égal à #ENV{categorie}
sinon (si id_mot n'est pas égal à #ENV{categorie}
1 qu'il commence et finisse par n'importe quoi (c'est le sens du point
dans la regexp)
Cela fonctionne mais je ne vois que 4 articles dans la boucle
si tu fait :
<BOUCLE_actu1(ARTICLES) {branche}
{doublons}
{par date}
{inverse}
{0,5}>
ça te renvoie les enregistrements 5 par 5 ?
Oui. L'article qui disparait dans l'autre boucle est le premier (le plus récent).
En fait, lorsqu'on insère les critères sur les variables d'environnement dans la boucle, la liste est tronquée (4 au lieu de 5) et l'ordre anté-chronologique n'est pas respecté, c'est même un étrange désordre…
J'ai vérifié que tous les articles de la rubrique sont associés à au moins un mot clé (beaucoup plus en général).
J'ai aussi essayé de placer les critères de tri avant les critères sur les variables d'environnement mais cela ne change pas le résultat :
<BOUCLE_actu1(ARTICLES){branche}{doublons}{par date}{inverse}{0,5}{id_mot==^(#ENV{categorie,.})$}{id_mot==^(#ENV{cylindree,.})$}{id_mot==^(#ENV{marque,.})$}>
enfin, j'ai essayé de ne placer qu'une variable d'environnement, même résultat (mêmes articles dans les même ordre que avec les 3 critères).
Cela fonctionne mais je ne vois que 4 articles dans la boucle
si tu fait :
<BOUCLE_actu1(ARTICLES) {branche}
{doublons}
{par date}
{inverse}
{0,5}>
ça te renvoie les enregistrements 5 par 5 ?
Oui. L'article qui disparait dans l'autre boucle est le premier (le plus récent).
il n'a pas de mot clé du tout peut etre ?
d'après ton besoin, il faut plutot amha utiliser {id_mot?}
donc soit tu peux renommer ton categorie en id_mot
soit tu mets ta boucle dans un INCLURE...{id_mot=#ENV{categorie}}
La boucle suivante* permet d'afficher une liste d'articles qui prend en compte des paramètres passés dans l'url s'il y en a. S'il n'y en pas, la liste ignore le critère.
Mais cette boucle ne prend en compte que des articles qui ont au moins un mot clé associé. Comment pourrait-on faire pour prendre aussi en compte les articles pour lesquels aucun mot-clé n'est associé, lorsqu'on ne passe aucun paramètre dans l'url ?
La boucle suivante* permet d'afficher une liste d'articles qui prend
en compte des paramètres passés dans l'url s'il y en a. S'il n'y en
pas, la liste ignore le critère.
Mais cette boucle ne prend en compte que des articles qui ont au moins
un mot clé associé. Comment pourrait-on faire pour prendre aussi en
compte les articles pour lesquels aucun mot-clé n'est associé,
lorsqu'on ne passe aucun paramètre dans l'url ?
<BOUCLE_actu1(ARTICLES){branche}{doublons}{par
date}{inverse}{0,5}{id_mot==^(#ENV{categorie,.+})$}{id_mot==^(#ENV{cylindree,.+})$}{id_mot==^(#ENV{marque,.+})$}>
L'essai que j'ai tenté en remplaçant le + par * à la fin de la chaïne
recherchée ne donne pas ce résultat.
c'est normal, j'ai été confrontée au même problème : spip ne prend en
compte que les articles AVEC mot-clé donc s'il n'y en a aucun, ils sont
ignorés (ce qui est bien dommage
alors, soit tu ajoutes un mot-clé bidon pour les articles sans mot-clé
(bof), soit tu peux peut-être utiliser le système qui permet d'afficher
quelque chose si la boucle ne retourne rien (<//B_truc) :
Comment pourrait-on faire pour prendre aussi en
compte les articles pour lesquels aucun mot-clé n'est associé, lorsqu'on ne passe aucun paramètre dans l'url ?
La boucle suivante* permet d'afficher une liste d'articles qui prend en compte des paramètres passés dans l'url s'il y en a. S'il n'y en pas, la liste ignore le critère.
Mais cette boucle ne prend en compte que des articles qui ont au moins un mot clé associé. Comment pourrait-on faire pour prendre aussi en compte les articles pour lesquels aucun mot-clé n'est associé, lorsqu'on ne passe aucun paramètre dans l'url ?
La boucle suivante* permet d'afficher une liste d'articles qui prend
en compte des paramètres passés dans l'url s'il y en a. S'il n'y en
pas, la liste ignore le critère.
Mais cette boucle ne prend en compte que des articles qui ont au moins
un mot clé associé. Comment pourrait-on faire pour prendre aussi en
compte les articles pour lesquels aucun mot-clé n'est associé,
lorsqu'on ne passe aucun paramètre dans l'url ?
<BOUCLE_actu1(ARTICLES){branche}{doublons}{par
date}{inverse}{0,5}{id_mot==^(#ENV{categorie,.+})$}{id_mot==^(#ENV{cylindree,.+})$}{id_mot==^(#ENV{marque,.+})$}>
L'essai que j'ai tenté en remplaçant le + par * à la fin de la chaïne
recherchée ne donne pas ce résultat.
c'est normal, j'ai été confrontée au même problème : spip ne prend en
compte que les articles AVEC mot-clé donc s'il n'y en a aucun, ils sont
ignorés (ce qui est bien dommage
alors, soit tu ajoutes un mot-clé bidon pour les articles sans mot-clé
(bof), soit tu peux peut-être utiliser le système qui permet d'afficher
quelque chose si la boucle ne retourne rien (<//B_truc) :
Comment pourrait-on faire pour prendre aussi en
compte les articles pour lesquels aucun mot-clé n'est associé, lorsqu'on ne passe aucun paramètre dans l'url ?
<BOUCLE_actu1(ARTICLES){branche}{doublons}{par date}{inverse}{0,5}{id_mot==^(#ENV{categorie,.+})$}{id_mot==^(#ENV{cylindree,.+})$}{id_mot==^(#ENV{marque,.+})$}>
J'essayerais avec un "?" devant les ==
J'ai testé, et cela affiche tout, même lorsque des paramètres sont passés dans l'url, donc on n'a plus ce qu'on veut.
Merci quand même !