traiter différentiellement une portion de code dans un squelette article

Bonjour,

Lorsque je crée un squelette article propre à une rubrique (par ex. article-5.html), c’est parce que je veux que les articles de cette rubrique s’affichent selon une structure HTML différente de l’article générique répondant au squelette article.html. Mais si je veux simplement mettre en place une toute petite différence entre les articles de la rubrique 5 et les autres articles, n’y a-t-il pas une autre solution que de re-créer entièrement un clone de article.html sous le nom de article-5.html qui va contenir exactement le même code, sauf 2 lignes qui vont changer ?

Par exemple, si je veux simplement exclure l’exécution / interprétation d’un bloc

pour les articles de la rubrique 5, et pour ceux-là seulement, que puis-je écrire dans mon squelette article.html pour demander à SPIP de ne pas traiter ce bloc lorsque l’article dépend de l’ID_RUBRIQUE=5 ? ou encore si je veux simplement que ce bloc ne soit pas exécuté quand ID_ARTICLE=112 ? L’idée est d’éviter de cloner article.html indéfiniment (en créant ici article-5.html) pour de si petites différences ?

Ou, inversement, que faire dans mon squelette article.html pour demander à SPIP d’exécuter mon

seulement quand l’ID_RUBRIQUE de l’article est ID_RUBRIQUE=5, ou encore quand ID_ARTICLE=112 ?

Je suis sûr qu’il y a truc simple à faire pour cela, mais je ne vois pas quoi.
L’idée est de réduire le nombre de squelettes total, ce qui est avantageux par exemple dans le cas d’un site multilingue par secteurs.

Merci.


Piffeo

Le 30 oct. 08 à 13:45, Piffeo a écrit :

Bonjour,

Lorsque je crée un squelette article propre à une rubrique (par ex. article-5.html), c'est parce que je veux que les articles de cette rubrique s'affichent selon une structure HTML différente de l'article générique répondant au squelette article.html. Mais si je veux simplement mettre en place une toute petite différence entre les articles de la rubrique 5 et les autres articles, n'y a-t-il pas une autre solution que de re-créer entièrement un clone de article.html sous le nom de article-5.html qui va contenir exactement le même code, sauf 2 lignes qui vont changer ?

Par exemple, si je veux simplement exclure l'exécution / interprétation d'un bloc <div> pour les articles de la rubrique 5, et pour ceux-là seulement, que puis-je écrire dans mon squelette article.html pour demander à SPIP de ne pas traiter ce bloc lorsque l'article dépend de l'ID_RUBRIQUE=5 ? ou encore si je veux simplement que ce bloc ne soit pas exécuté quand ID_ARTICLE=112 ? L'idée est d'éviter de cloner article.html indéfiniment (en créant ici article-5.html) pour de si petites différences ?

Ou, inversement, que faire dans mon squelette article.html pour demander à SPIP d'exécuter mon <div> seulement quand l'ID_RUBRIQUE de l'article est ID_RUBRIQUE=5, ou encore quand ID_ARTICLE=112 ?

[(#ID_RUBRIQUE|=={5}|?{' ',''})<INCLURE{fond=noisettes/monboutdecodespecifiqueauxarticlesdelarubrique5}{env}>]

devrait le faire

Merci, ça marche ! Avec ce code, le fichier inclus n’est en effet exécuté que lorsqu’il s’agit d’un article appartenant à la rubrique n° 5. Cool.

  1. Si je veux que ça marche pour plusieurs rubriques (pas seulement la 5, mais aussi 7 et 9 par exemple), y a-t-il une syntaxe particulière ? pour l’instant, je me contente de copier/coller plusieurs fois cette instruction en changeant le n° de rubrique et ça marche, mais y a peut-être mieux.

  2. Pour que je puisse à l’avenir développer et enrichir selon mes besoins ce type d’instructions, peux-tu expliquer le sens des filtres utilisés (je suis pas très bon en filtres). Je comprends le sens de =={5} qui veut dire « pour une rubrique égale à 5 » mais pour le reste, je ne comprends pas très bien : tu as ajouté un filtre "?{sioui,sinon} ? pourquoi ?

Piffeo

Le 30 octobre 2008 14:12, Pierre Fiches <pierre.fiches@free.fr> a écrit :

[(#ID_RUBRIQUE|=={5}|?{’ ‹ , ›'})<INCLURE{fond=noisettes/monboutdecodespecifiqueauxarticlesdelarubrique5}{env}>]

devrait le faire

Le 31 oct. 08 à 11:12, Piffeo a écrit :

Merci, ça marche ! Avec ce code, le fichier inclus n’est en effet exécuté que lorsqu’il s’agit d’un article appartenant à la rubrique n° 5. Cool.

  1. Si je veux que ça marche pour plusieurs rubriques (pas seulement la 5, mais aussi 7 et 9 par exemple), y a-t-il une syntaxe particulière ? pour l’instant, je me contente de copier/coller plusieurs fois cette instruction en changeant le n° de rubrique et ça marche, mais y a peut-être mieux.

l’idée serait donc de vérifier alors si l’id_rubrique en question peuple un array ou non :
#SET{montablo,#GET{montablo,#ARRAY{}}}
#SET{montablo,#GET{montablo,#ARRAY{0,5,1,7,2,9}}}
[(#ID_RUBRIQUE|in_array{#GET{montablo}}|?{’ ‹ , ›'})mon inclure]

à vérifier quand même

  1. Pour que je puisse à l’avenir développer et enrichir selon mes besoins ce type d’instructions, peux-tu expliquer le sens des filtres utilisés (je suis pas très bon en filtres). Je comprends le sens de =={5} qui veut dire « pour une rubrique égale à 5 » mais pour le reste, je ne comprends pas très bien : tu as ajouté un filtre "?{sioui,sinon} ? pourquoi ?

C’est la syntaxe que je maîtrise le mieux. qui offre l’avantage de pouvoir gérer aisément le cas opposé (quand la balise id_rubrique ne vaut pas 5). Mais c’est vrai que l’on pourrait l’écrire différemment.

Le 30 octobre 2008 14:12, Pierre Fiches <pierre.fiches@free.fr> a écrit :

[(#ID_RUBRIQUE|=={5}|?{’ ‹ , ›'})<INCLURE{fond=noisettes/monboutdecodespecifiqueauxarticlesdelarubrique5}{env}>]

devrait le faire

Le 1 nov. 08 à 07:43, Eric Delmotte a écrit :

Est ce que ce genre de chose (inclusion dans une rubrique spécifique) serait possible en précisant une rubrique qui n'est pas forcément la mère, mais peut etre la grand mère ?

en jouant avec id_parent dans ce cas.

Mais tout dépend de ce que tu veux faire....

Le 1 nov. 08 à 16:15, Eric Delmotte a écrit :

Peut etre, mais je vois que id_parent est pour la boucle rubriques, ça veut dire que je dois englober mon bout de code dans une boucle rubriques, qui effectue alors mon code normal en testant l'idparent c'est ça ?

englober peut-être pas mais au moins obtenir des infos sur lesquelles raisonner

par exemple dans une boucle article tu pourrais simplement écrire :
<BOUCLE_ousuisje(RUBRIQUES){id_rubrique}>
#SET{grandmere,#ID_PARENT}
</BOUCLE_ousuisje>

(ou récupérer grand-mère de l'environnement s'il est possible de le transmettre par ce canal.)

Ensuite toujours dans une boucle article tu peux inclure un bout de code conditionnellement :

[(#GET{grandmere}|=={5}|?{' ',''})<INCLURE{fond=noisettes/cetarticleapourgrandmerelarub5}{...des parametres...}>]