problématique
comment faire figurer les articles dans un tableau à entrées multiples, fonction des mots clés qui leurs sont attribués ?
Imaginons par exemple que j’aie un site consacré à la cuisine internationale. A chaque rubrique correspond un pays. Et pour chaque plat, j’associe un mot clé précisant si c’est une entrée, un plat, un dessert, et un autre mot-clé précisant quel type de vin accompagne idéalement le plat.
Je peux vouloir créer une page sur laquelle les plats sont triés en fonction du type de plat (entrée, plat, dessert) et en fonction du vin qui l’accompagne le mieux. Je veux donc faire un tableau à double entrée.
Boucles
La boucle qui permet de faire cela est la suivante :
<BOUCLE_groupe_un (MOTS) {id_groupe=1} {par titre}>
<BOUCLE_groupe_deux (MOTS) {id_groupe=2} {par titre}>
<BOUCLE_articles_lies_un (ARTICLES) {id_mot=#_groupe_un:ID_MOT}>
<BOUCLE_articles_lies_deux (ARTICLES) {id_article} {id_mot=#_groupe_deux:ID_MOT}>
</BOUCLE_articles_lies_deux>
</BOUCLE_articles_lies_un>
</BOUCLE_groupe_deux>
</BOUCLE_groupe_un>
Remarques : Dans cet exemple de code, j’ai utilisé le critère {id_groupe=XX}
, dans un soucis de simplicité. Je vous recommande cependant de lui préférer un critère de type {type=XXX}
, ce qui vous permet de vous affranchir de la numérotation de la base de données au profit des noms de vos groupes de mots-clés. Ainsi, en cas de fausse manipulation qui aurait pour conséquence de changer le numéro de vos groupes (suite à un effacement accidentel par exemple), vous n’avez pas à modifier les squelettes, mais simplement à conserver un nom de groupe identique.
ATTENTION !!! Vous ne pouvez avoir qu’un seul mot clé de chaque groupe attaché à chaque article !!! Autrement dit, vous devez avoir un article par élément du tableau.
Explications
Quel est le principe de tout cela ?
La boucle _groupe_un parcourt un à un tous les mots clés du groupe un.
Puis, pour chaque mot clé du groupe un, la boucle _groupe_deux parcourt tous les mots clés du groupe deux. Nous avons donc construit à ce stade chaque couple de mots clés, triés par titres.
La boucle articles_lies_un parcourt ensuite chaque article et ne retiens
que ceux qui sont liés à un mot du groupe un.
La boucle articles_lies_deux vérifie ensuite pour chaque article qui possède un mot clé du groupe un s’il possède aussi un mot clé du groupe deux (grâce au critère id_article).
(Pour l’explication de la signification de la balise #_groupe_deux_inc:ID_MOT, on se référera à la documentation sur les nouvelles balises).
Introduction du HTML
Pour afficher le tableau proprement dit, on pourra par exemple utiliser le code suivant :
<B_groupe_un>
<table border="1" summary="Tableau présentant les articles qui ont pour mots clés un ou plusieurs mots clés du groupe 1 _ET_ un ou plusieurs mots-clés du groupe deux">
<caption>Articles traitant à la fois du theme du groupe un et du theme du groupe deux, triés par couples de mots clés.</caption>
<!--Cette première boucle permet d'obtenir la première ligne du tableau (la liste des mots clés du groupe deux).-->
<tr><td></td>
<BOUCLE_th_groupe_deux (MOTS) {id_groupe=2} {par titre}>
<th scope="row">#TITRE</th>
</BOUCLE_th_groupe_deux>
</tr>
<BOUCLE_groupe_un (MOTS) {id_groupe=1} {par titre}>
<!--Ici débute les lignes qui composent le tableau, une par élément contenu dans le groupe de mots clés 1.-->
<tr>
<!--Cette balise correspond à la première colonne du tableau.-->
<th scope="col">#TITRE</th>
<BOUCLE_groupe_deux (MOTS) {id_groupe=2} {par titre}>
<B_articles_lies_un>
<!--C'est ici que se remplissent caque case du tableau.-->
<td>
<BOUCLE_articles_lies_un (ARTICLES) {id_mot=#_groupe_un:ID_MOT}>
<BOUCLE_articles_lies_deux (ARTICLES) {id_article} {id_mot=#_groupe_deux:ID_MOT}>
<a href="#URL_ARTICLE" hreflang="#LANG" [title="(#DESCRIPTIF|textebrut|entites_html)"]>#TITRE</a>
</BOUCLE_articles_lies_deux>
</BOUCLE_articles_lies_un>
</td>
</B_articles_lies_un>
<!--Ce code alternatif permet d'avoir une case vide dans le tableau dans le cas où il n'y a pas d'article lié à cette combinaison de mots clés.-->
<td> </td>{
<//B_articles_lies_un>
</BOUCLE_groupe_deux>
</tr>
</BOUCLE_groupe_un>
</table>
</B_groupe_un>
Ce qui nous donne le résultat suivant (par exemple) :
On trouvera toutes les informations qui traitent des tableaux en HTML 4.01 dans la recommandation W3C.
Pour aller plus loin
On peut réaliser ainsi des tableaux à entrées multiples en ajoutant des boucles (MOTS) et (ARTICLES).
On peut aussi procéder ainsi pour toutes les boucles qui acceptent des mots clés : RUBRIQUES, BREVES, SYNDICATION et FORUM, ainsi que celles qui s’y ajouteront.
Autre méthode
Il est possible d’obtenir la même chose en utilisant les doublons nommés.
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 : |