Les mots-clés dans les rubriques

Revenons au fichier « rubrique.html ». Nous l’avions laissé avec une méchante BOUCLE_articles, sans intérêt pour notre site, puisqu’elle ne classait pas les articles par catégories.

Le monde est bien fait : nous venons de programmer une telle fonctionnalité pour les articles !

Il suffit donc de copier-coller le bloc qui nous intéresse, de l’insérer à la place de la BOUCLE_articles (qui disparaît donc), et de voir s’il y a des modifications nécessaires. Ce qui nous donne :

<BOUCLE_les_articles(RUBRIQUES){id_rubrique}>
		<B_tests><p>Les tests de ce jeu :
		<ul>
		<BOUCLE_tests(ARTICLES){id_rubrique}{titre_mot=Test}>
			<li>
			<BOUCLE_tests_machines(MOTS){id_article}{type=Machines}>
				[(#LOGO_MOT)]
			</BOUCLE_tests_machines>
			<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
		</BOUCLE_tests>
		</ul>
		</B_tests>
		
		<B_previews><p>Les previews de ce jeu :
		<ul>
		<BOUCLE_previews(ARTICLES){id_rubrique}{titre_mot=Preview}>
			<li>
			<BOUCLE_previews_machines(MOTS){id_article}{type=Machines}>
				[(#LOGO_MOT)]
			</BOUCLE_previews_machines>
			<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
		</BOUCLE_previews>
		</ul>
		</B_previews>

		<B_soluces><p>Les soluces de ce jeu :
		<ul>
		<BOUCLE_soluces(ARTICLES){id_rubrique}{titre_mot=Soluce}>
			<li>
			<BOUCLE_soluces_machines(MOTS){id_article}{type=Machines}>
				[(#LOGO_MOT)]
			</BOUCLE_soluces_machines>
			<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
		</BOUCLE_soluces>
		</ul>
		</B_soluces>

		<B_astuces><p>Les trucs et astuces de ce jeu :
		<ul>
		<BOUCLE_astuces(ARTICLES){id_rubrique}{titre_mot=Astuces}>
			<li>
			<BOUCLE_astuces_machines(MOTS){id_article}{type=Machines}>
				[(#LOGO_MOT)]
			</BOUCLE_astuces_machines>
			<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
		</BOUCLE_astuces>
		</ul>
		</B_astuces>
		
		<BOUCLE_news(ARTICLES){id_rubrique}{titre_mot=News}{par date}{inverse}{0,1}>
		<p><a href="news_jeu.php3?id_rubrique=#ID_RUBRIQUE">Les news de ce jeu</a> - dernière mise-à-jour : [(#DATE|affdate)]
		</BOUCLE_news>
	</BOUCLE_les_articles>

Les modifications apportées :
-  inutile de changer la requête {id_rubrique}, puisque c’était déjà sur cette rubrique que l’on se basait dans les articles ;
-  supprimons tous les {doublons}, ils ne sont d’aucune utilité ici (il n’y a pas d’article déjà affiché) ; autant ne pas prendre le risque de conflits avec de futurs développements de notre page s’ils ne servent à rien ;
-  l’ensemble est installé dans une grande BOUCLE_les_articles. Que fait cette boucle ? Strictement rien : elle renvoit la rubrique dans laquelle nous nous trouvons déjà. Mais elle nous sera utile ci-après...

L’autre point faible de notre page était la BOUCLE_jeux, dans laquelle la BOUCLE_avec_articles profitait de son passage pour afficher la liste des articles de la sous-rubrique sans effectuer de tri. Or, trier les articles d’une rubrique, c’est ce que nous venons de faire ci-dessus.

Modifions donc la BOUCLE_jeux ainsi :

<BOUCLE_jeux(RUBRIQUES){id_parent}{par titre}>

		<B_avec_articles>
		<h4><a href="#URL_RUBRIQUE">#TITRE</a></h4>
		[(#LOGO_RUBRIQUE|right)]
		<ul>
		<BOUCLE_avec_articles(ARTICLES){id_rubrique}{0,1}>
			<BOUCLE_repeter_articles(boucle_les_articles)></BOUCLE_repeter_articles>
		</BOUCLE_avec_articles>
		</ul>
		</B_avec_articles>
		
	</BOUCLE_jeux>

La BOUCLE_avec_articles est désormais effectuée une seule fois (sur un seul article), ce qui est suffisant pour savoir si elle contient un article. On voit apparaître une BOUCLE_repeter_articles : il s’agit d’un boucle qui reproduit exactement le comportement de la BOUCLE_les_articles, à partir de l’endroit où elle se trouve (c’est-à-dire qu’elle démarre non plus depuis la rubrique principale, mais de la sous-rubrique). L’intérêt désormais de limiter la BOUCLE_avec_articles à un unique élément est alors clair : sans cette limitation, la BOUCLE_repeter_articles serait exécutée autant de fois qu’il y a d’articles dans la sous-rubrique.

Évidemment, le résultat graphique de cet exemple est hideux : trop chargé, peu clair. Disons qu’il était intéressant d’utiliser une « boucle récursive » dans ce tutorial...

Auteur L’équipe de SPIP Publié le : Mis à jour : 26/10/12

Traductions : عربي, català, Español, français, italiano