spip  

Re: [Spip] Squelette par mot clef

Dominique
Sun, 28 Dec 2008 02:57:07 -0800

Jean-Christophe Villeneuve <jcvillene...@cegetel.net> wrote:

> bon j'avance : il faut mettre le code inclus dans une boucle article.
> 
> Mais comment tester si un article appartient à une rubrique qui a un mot
> clé "machin" ou à une autre rubrique ?
> (ça m'éviterait d'attribuer ce mot_clé à tous les articles de cette 
> rubrique)
> Je m'y perds dans les boucles rub et art ...

1. Tu définis un groupe "type_rubrique" qui contiendra les mots-cles
correspondants aux rubriques particulières
ex : galerie-photo, agenda ou xxxx....

2. Tu gères chaque comportement spécifique dans une noisette que tu
nommes du nom du mot-clef dans un dossier "noisettes" par exemple :
galerie-photo.html, agenda.html, xxxx.html
+ une noisette "normal.html" pour le comportement "normal"
(pas besoin d'attribuer le mot-clé "normal" aux rubriques ordinaires...)

3. Dans ton article (ou ta rubrique) tu cherches d'abord si la rubrique
est rattachée à un mot clef de ce groupe

<BOUCLE_type_rubrique (MOTS){id_rubrique}{type=type_rubrique}{0,1}>
        #SET{type, #TITRE}
</BOUCLE_type_rubrique>
là on a une variable "type" qui contient rien où le mot-cle associé à la
rubrique
Cette boucle tu peux l'utiliser dans le squelette de la rubrique ou de
l'article à partir du moment où dans ce squelette tu as une boucle
englobante qui permet de récupérer le contexte.

4. tu recupéres le chemin de la noisette (si elle existe) sinon #CHEMIN
ne renvoit rien
#SET{noisette, (#CHEMIN{noisettes/(#GET{type}|concat{.html})})}

après reste plus qu'à faire les tests
// il y a une noisette
[(#GET{noisette}|?{' ',''})
[(#INCLURE{fond=noisettes/#GET{type}}{env})]]
// il n'y en a pas
[(#GET{noisette}|?{'',' '}) [(#INCLURE{fond=noisettes/normal}{env})]]

5. Après en raffinant cela tu peux aussi l'utiliser dans l'entête pour
appeler une feuille de style ou un javascript qui aurait pour nom le nom
du mot-clé ex : agenda.js, agenda.css

<BOUCLE_type_rubrique (MOTS){id_rubrique}{type=type_rubrique}{0,1}>
 [<link href="(#CHEMIN{css/#TITRE.css})" rel="stylesheet"
type="text/css" />]
 [<script type="text/javascript"
src="(#CHEMIN{js/#TITRE.js})"></script>]
</BOUCLE_type_rubrique>

Cela depend comment tu gères tes entêtes méta (dans une noisette ou
pas), faudra peut-être ne pas garder le même nom à la boucle dans ce
cas...

Après divers tatonnements j'ai adopté ce principe dans mes dev et cela
permet d'avoir un squelette d'aticle ou de rubrique qui peut s'adapter à
de nouvelles fonctionnalités sans changer sa programmation, et surtout
sans faire appel à des squelettes du type rubrique-32 ou article=65 ce
qui est très rigide pour toute modif.

-- 
http://wojylac.free.fr
Un proverbe chinois dit que lorsqu'on a rien à dire
on cite généralement un proverbe chinois.

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-...@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