guiderdoni.net

Bloc notes : spip, css, xhtml, web, standards, mac ...

Accueil > Spip > Squelette par mot clé en SPIP 2

Articles de cette rubrique

Articles

publie le lundi 9 février 2009 par Alexandra

Squelette par mot clé en SPIP 2

Le plugin squelette par mot clé ne fonctionne plus en SPIP 2.
Cedric a dit un jour sur spip-zone que le plugin était mort mais qu’il ne le savait pas encore.
Il faut donc revenir à la bonne vielle méthode des boucles en attendant un futur nouveau plugin qui devrait pointer à l’horizon un de ces jours prochains.

Méthode simple pour deux jeux de squelettes différents dans les articles et les rubriques

Si nous avons que deux jeux de squelettes, nous pouvons faire deux boucles, une boucle article ou rubrique englobante et une boucle mot clé, avec inclusion du squelette article-large si présence du mot clé, et sinon inclusion du squelette article normal si pas de mot clé dans la partie alternative de la boucle. Le {id_mot=1} correspond au mot clé "large".

- Pour les articles

<BOUCLE_principale(ARTICLES){id_article}>
<BOUCLE_large(MOTS){id_article}{id_mot=1}>
<INCLURE{fond=article-large}{id_article}{self=#SELF}{lang}>
</BOUCLE_large>
<INCLURE{fond=article-normal}{id_article}{self=#SELF}{lang}>
<//B_large>
</BOUCLE_principale>
<//B_principale>

Cette méthode sera valable aussi bien pour les articles que pour les rubriques, il suffira de changer la boucle en conséquence.

- Pour les rubriques

<BOUCLE_principale(RUBRIQUES){id_rubrique}>
<BOUCLE_large(MOTS){id_rubrique}{id_mot=2}>
<INCLURE{fond=rubrique-large}{id_rubrique}{self=#SELF}{lang}>
</BOUCLE_large>
<INCLURE{fond=rubrique-normal}{id_rubrique}{self=#SELF}{lang}>
<//B_large>
</BOUCLE_principale>
<//B_principale>

Méthode pour x jeu de squelettes

cy_altern use d’une petite bidouille donnée sur l’irc pour que cela fonctionne avec plus que deux jeux de squelettes, puisque qu’il utilise <INCLURE{fond=rubrique-#TITRE}{env}>.

Sa boucle permet de reprendre exactement les squelettes et la config des mots clés utilisés par le plugin squelettes_par_mots_clés lorsqu’on passe de 1.9.2 à 2.0.

Le principe de base est de récupérer un éventuel mot clé attribué aux rubriques ou articles pour choisir le fichier de squelette à utiliser (par un INCLURE). Le nom du fichier de squelette utilisé sera de la forme rubrique-XXX.html ou article-YYY.html avec XXX ou YYY correspondant au mot clé.
Par exemple : si on attribue le mot clé blog à une rubrique, celle-ci sera affichée avec le squelette rubrique-blog.html. Si il n’existe pas de "mot clé de squelette" pour une rubrique, c’est le squelette rubrique-normale.html qui sera utilisé.

Le code permettant de faire la sélection du fichier à INCLURE est le suivant :

- Pour les rubriques

<BOUCLE_skel(MOTS){id_rubrique}{type=configuration rubriques}{0,1}>
   <INCLURE{fond=rubrique-#TITRE}{env}>
</BOUCLE_skel>
   <INCLURE{fond=rubrique-normale}{env}>
<//B_skel>

- Pour les articles

<BOUCLE_skel(MOTS){id_article}{type=configuration rubriques}{0,1}>
   <INCLURE{fond=article-#TITRE}{env}>
</BOUCLE_skel>
   <INCLURE{fond=article-normal}{env}>
<//B_skel>

Dans l’exemple donné le groupe de mots clés qui conditionne les squelettes s’appelle "configuration rubriques".

Mode opératoire :

  • renommer rubrique.html en rubrique-normale.html
  • coller le code ci-dessous dans rubrique.html
  • renommer article.html en article-normal.html
  • coller la deuxième boucle dans article.html
  • créer autant de fichiers spécifiques (rubrique-XXX.html ou article-YYY.html) que nécessaire, pour chacun d’entre eux créer le mot clé (XXX ou YYY) correspondant dans le groupe configuration rubriques
  • attribuer un de ces mots clés aux rubriques ou articles qui doivent utiliser un squelette spécifique.

Remarque : dans les fichiers de squelette, ne pas oublier de mettre une boucle englobante ARTICLES ou RUBRIQUES qui va permettre de récupérer le contexte.

Astuce : pour améliorer la souplesse du système on peut utiliser un test (avec la balise #CHEMIN) sur l’existence du fichier à INCLURE (histoire de ne pas se retrouver avec une vilaine erreur 404 si par hasard le fichier de squelette n’existe pas...).
Exemple pour la boucle de choix du squelette de rubrique :

<BOUCLE_skel(MOTS){id_rubrique}{type=configuration rubriques}{0,1}>[
     (#CHEMIN{rubrique-#TITRE.html}|?{' '})
   <INCLURE{fond=rubrique-#TITRE}{env}>
]</BOUCLE_skel>
   <INCLURE{fond=rubrique-normale}{env}>
<//B_skel>

Nous allons aussi vous proposer la méthode que Dominique adopte dans ses squelettes :

http://www.mail-archive.com/spip@rezo.net/msg08766.html

1. Définir un groupe de mot clé : type_rubrique

Avec autant de mot clé que de squelettes souhaités. Pas besoin d’attribuer le mot-clé "normal" aux rubriques ordinaires...
- rubrique_galerie
- rubrique_photo
- rubrique_agenda

2. Gerer chaque comportement spécifique dans une noisette nommée du nom du mot-clef, dans un sous repertoire noisettes

- rubrique_galerie.html
- rubrique_photo.html
- rubrique_agenda.html
- rubrique_normal.html

3. Dans son squelette article.html ou rubrique.html chercher d’abord si la rubrique ou l’article 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>

Explication :
Là on a une variable "type" qui contient rien ou 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. On recupère le chemin de la noisette (si elle existe) sinon #CHEMIN ne renvoit rien et on fait deux filtres de tests :

#SET{noisette, (#CHEMIN{noisettes/(#GET{type}|concat{.html})})}

Après il ne 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/rubrique_normal}{env})]
]

On peut même en SPIP 2 simplifier encore les tests avec oui et non

// il y a une noisette
[(#GET{noisette}|oui)
<INCLURE{fond=noisettes/#GET{type}}{env}>
]
// il n'y en a pas
[(#GET{noisette}|non)
<INCLURE{fond=noisettes/rubrique_normal}{env}>
]

Pour aller plus loin encore :

5. Après en raffinant cela on peut 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 : rubrique_agenda.js, rubrique_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>

Avantages de la méthode :

Une grande flexibilité : Cela permet d’avoir un seul squelette d’article ou de rubrique qui peut s’adapter à de nouvelles fonctionnalités, gràce à l’inclusion des noisettes et des mots clés, sans changer sa programmation initiale, et surtout sans faire appel à des squelettes du type rubrique=2.html ou article=2 qui rendent assez pénibles toutes modifications génériques.

Forum

Répondre à cet article

1 commentaire

Squelette par mot clé en SPIP 2

Le plugin "composition" (qui n’existait pas à la date de publication de cet article) permet de répondre à la question de la personnalisation fonctionnelle de certaines rubriques ou articles avec une démarche si j’ai bien compris voisine mais sans mot-clé.

http://www.spip-contrib.net/Compositions

12 mai 2009, par Dominique - repondre message
2005-2017 - Contenu en GPL http://www.guiderdoni.net - Site réalisé avec SPIP 
rechercher - plan du site - prive - alexandra.guiderdoni@gmail.com
CSS - XHTML - squelette