Le problème
En assurant une formation sur spip auprès d’instituteurs du Maine et Loire il m’a été posé un problème pour lequel je n’avais pas de solution :
- Certaines rubriques qui étaient consacrées aux horaires de l’école devaient être capables de présenter les 2 ou 3 articles qu’elles contenaient sans aucun lire la suite ou lien vers d’autres articles ;
- De plus grosses rubriques qui contenaient des articles plus volumineux et plus nombreux sur les travaux de leurs élèves ne devaient présenter qu’une introduction de ces articles avec les liens lire la suite classiques.
Le souci était que le choix d’un squelette pour la présentation d’une rubrique était unique et ce qui était adapté pour l’un ne l’était plus pour l’autre...
Utiliser des squelettes spécifiques aux rubriques ne faisaient que repousser le problème à plus tard et demande plus de difficultés pour la maintenance du site.
Il n’y a qu’une seule rubrique.html alors comment faire ?
Le début de la solution
Neoram m’a montré une solution simple à ce problème - loin de moi l’idée de prétendre donc qu’elle est de moi ; cet article se borne à essayer de la présenter de la façon la plus claire possible.
En fonction d’un mot clé associé à une rubrique on appellera tel ou tel squelette.
On va donc créer 3 squelettes
- Deux squelettes pour les deux présentation spécifiques (horaire ou travaux)
- Un squelette par défaut si aucun mot clé n’a été choisi
1. sous_rubrique-horaire.html
<BOUCLE_rub(RUBRIQUES){id_rubrique}>
Liste des horaires de l'etablissement
<BOUCLE_art(ARTICLES){id_rubrique}>
<h2>#TITRE</h2>
<h3>#SURTITRE</h3><h3>#SOUS_TITRE</h3>
<p>#CHAPO</p><p>#TEXTE</p>
</BOUCLE_art>
</BOUCLE_rub>
Vous voyez il présente de façon complète tous les articles
2. sous_rubrique-travaux.html
<BOUCLE_rub(RUBRIQUES){id_rubrique}>
<BOUCLE_art(ARTICLES){id_rubrique}>
Liste des horaires de l'etablissement
<h2>#TITRE</h2>
<h3>#SURTITRE</h3><h3>#SOUS_TITRE</h3>
<p>#CHAPO</p>
<a href='#URL_ARTICLE'>Lire la suite</a>
</BOUCLE_art>
</BOUCLE_rub>
Celui-là ne présente pas l’article au complet mais juste un lien lire la suite avec le chapeau.
3. sous_rubrique-defaut.html
il s’agit du squelette appelé par défaut si aucun mot clé n’est précisé.
<BOUCLE_rub(RUBRIQUES){id_rubrique}>
<BOUCLE_art(ARTICLES){id_rubrique}>
<a href='#URL_ARTICLE'>#TITRE</a>
</BOUCLE_art>
</BOUCLE_rub>
celui-là est très simple.
Ça se complique un peu, la solution arrive
Voici maintenant le code plus complexe de « sous_rubrique.php3 » que j’expliquerai plus en détail après... Néanmoins faites en une première lecture pour comprendre ultérieurement.
<?php
//on analyse la valeur de la variable $squelette_rubrique
if($squelette_rubrique){
$squelette_rubrique="-".$squelette_rubrique;
}else{
$squelette_rubrique="-defaut";
}
//on construit $fond en fonction de $squelette_rubrique
$fond = "sous_rubrique".$squelette_rubrique;
$delais = 24 * 3600;
include ("inc-public.php3");
?>
Maintenant voici le code tant attendu (roulement de tambour !!!!) du squelette rubrique.html
On suppose au préalable :
- Que vous avez créé un groupe de mot clé que vous appellerez « squelette de rubrique » qui aura pour id 11 par exemple (à adapter à votre site bien entendu).
- Que dans ce nouveau groupe de mot clé vous avez créé les mots clés
« horaire » et « travaux ».
<BOUCLE_squelette_rubrique(MOTS){id_rubrique}{id_groupe=11}{0,1}>
<?php $squelette_rubrique='[(#TITRE|texte_script)]'; ?>
</BOUCLE_squelette_rubrique>
<INCLURE(sous_rubrique.php3){id_rubrique}>
Et voilà le tour est joué !
Recollons les morceaux :
Etape 1
BOUCLE_squelette_rubrique dans rubrique.html va récupérer le mot clé du groupe 11 c’est-à-dire du groupe « squelette de rubrique » et va l’affecter à la variable $squelette_rubrique (n’oubliez de remplacer le chiffre 11 par le numéro de votre goupe de mot clé).
Etape 2
Cette variable $squelette_rubrique est récupérée par le script « sous_rubrique.php3 » qui va alors construire la valeur de $fond en fonction de ce mot clé (relisez son code) :
- Si $squelette_rubrique vaut « horaire » alors $fond vaut sous_rubrique-horaire
- Si $squelette_rubrique vaut « travaux » alors $fond vaut sous_rubrique-travaux
- Si $squelette_rubrique vaut rien alors $fond vaut sous_rubrique-defaut
Etape 3
inc_public.php3 génère la page grâce la valeur qu’aura prise $fond
Et voilà, en espérant avoir été clair. N’hésitez pas à me faire part de vos remarques pour améliorer la lisibilité de cet article. Bien sûr le principe est généralisable à un grand nombre de mots clés et de squelettes :-) Vous n’êtes limités que par votre imagination !
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |