Les mots-clés dans les articles

Revenons à nos articles... Nous allons maintenant exploiter les mots-clés pour déterminer la ou les machines concernés, puis gérer « intelligemment » les liens vers les autres articles concernant le même jeu.

Les machines

Indiquer quelles machines sont concernées est très simple : il s’agit d’une simple application de la boucle (MOTS). Nous insérons la boucle suivante dans l’article (par exemple entre le #SOUSTITRE et la #DATE) :

<BOUCLE_machines(MOTS){id_article}{type=Machines}>
	[(#LOGO_MOT|left)]
	</BOUCLE_machines>

Nous n’affichons que le logo de la machine. (Évidemment, une fois tout le processus de création des boucles terminé, il conviendra de fignoler l’interface graphique...)

Dans la même rubrique, au sujet du même jeu

Afficher les autres articles contenus dans la même rubrique n’est guère plus compliqué.

Commençons par modifier l’appel de la BOUCLE_principale avec un {doublons}, pour éviter ensuite de créer un lien vers l’article déjà affiché (ça n’est pas bien grave, mais ça ne fait pas très propre) :

<BOUCLE_principale(ARTICLES){id_article}{doublons}>

Nous pourrions désormais nous contenter de récupérer tous les articles de la même rubrique (très simplement, une boucle (ARTICLES){id_rubrique}{doublons}). Cependant, nous voulons ici différencier clairement les types d’articles, non seulement pour rendre l’interface plus claire, mais aussi pour pouvoir réaliser des liens et des présentations différents selon les cas.

Commençons par une boucle vers les autres tests du même jeu. Nous insérons cette boucle toujours à l’intérieur de la BOUCLE_principale ; par exemple juste après #NOTES.

<B_tests><p>Autres tests de ce jeu :
	<ul>
	<BOUCLE_tests(ARTICLES){id_rubrique}{titre_mot=Test}{doublons}>
		<li><a href="#URL_ARTICLE">#TITRE</a>
	</BOUCLE_tests>
	</ul>
	</B_tests>

(Pour vérifier le fonctionnement de cette boucle, placez plusieurs articles de type « Test » dans la même rubrique. Vous pouvez même leur attribuer des machines différentes - un test de la version PC, un test de la version Dreamcast, un test de la version Playstation...)

Comme vous le constatez, c’est très simple :
-  on appelle les (ARTICLES) selon le critère {id_rubrique} (c’est-à-dire les articles appartenant à la même rubrique) ;
-  on ajoute la restriction suivante : le titre d’un des mots-clés liés à ces articles doit être « Test » (notez ici l’importance de respecter le choix initial du nom du mot-clé, et de ne plus le modifier par la suite) ;
-  le critère {doublons} interdit d’afficher à nouveau l’article principal.

Les textes optionnels avant et après (les <ul>...</ul>) ne servent que pour la présentation graphique.

N.B. Cette boucle utilise une fonctionnalité introduite dans le version SPIP 1.3 : dans une boucle (ARTICLES), vous pouvez sélectionner les articles selon le titre d’un mot-clé (avec le critère titre_mot), ou selon un groupe de mot-clé (critère type_mot).

Cependant cette boucle n’est pas suffisante : puisqu’il s’agit de tests du même jeu, mais sur d’autres machines, il faut indiquer de quelle machine il s’agit. Il suffit d’ajouter une boucle de mots (comme ci-dessus) à l’intérieur de cette BOUCLE_tests et d’afficher les logos correspondants. Ajoutons au passage la date de publication de l’article.

Le code devient :

<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>

Même chose pour les previews, les soluces et les astuces :

<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>

(Ces trois boucles fonctionnent exactement sur le même principe que la BOUCLE_tests.)

Restent les news... Nous allons ici adopter un comportement très différent. Les news étant généralement des informations « courtes » (annonce d’un délais, rumeurs...), on aura avantage à les présenter toutes réunies sur une même page (peut-être pas, mais pour les besoins de ce tutorial, on dira que c’est mieux !).

Le petit morceau de code fera l’affaire :

<BOUCLE_news(ARTICLES){id_rubrique}{titre_mot=News}{doublons}{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>

L’astuce qui permet d’obtenir un code aussi court :
-  tout d’abord, on ne s’intéresse plus à la machine concernée ; cela supprime une boucle ;
-  la BOUCLE_news récupère le dernier article ({par date}{inverse}{0,1}) associé au mot-clé « News ». Un seul article, cela suffit largement pour savoir s’il y a une page consacrée aux news ; et en récupérant la plus récente news, afficher sa date revient à annoncer la « dernière mise-à-jour » de la page des news...

De manière plus élégante, on aurait pu réaliser une BOUCLE_news vide et insérer le lien hypertexte dans le texte optionnel de la boucle.

Important : le lien hypertexte pointe vers une page « news_jeu.php3 », avec l’id_rubrique de la rubrique actuelle. Nous allons devoir, par la suite, créer le squelette correspondant.

Les jeux dans la même catégorie

Nous voulons, pour finir, afficher les jeux de la même catégorie (par exemple, les autres jeux du genre « Survival horror »).

Nous allons d’abord utiliser la méthode qui consiste à « remonter d’un cran » (pour passer de la rubrique de l’article à la rubrique de la catégorie de ce jeu). Puis nous allons récupérer la méthode utilisée dans les rubriques pour afficher séparément les rubriques qui contiennent des articles (c’est-à-dire des rubriques directement consacrées à un jeu).

Le code est :

<BOUCLE_rub_act(RUBRIQUES){id_rubrique}{doublons}>
		<BOUCLE_jeux(RUBRIQUES){meme_parent}{doublons}{par date}{inverse}>
			<B_avec_articles>
			<h4><a href="#URL_RUBRIQUE">#TITRE</a></h4>
			<BOUCLE_avec_articles(ARTICLES){id_rubrique}{age < 90}>
			</BOUCLE_avec_articles>
		</BOUCLE_jeux>
	</BOUCLE_rub_act>

Les subtilités de ce code :
-  la BOUCLE_rub_act (qui renvoit la rubrique actuelle) contient un {doublons} pour éviter ensuite d’afficher le jeu principal ;
-  logiquement, la BOUCLE_jeux contient elle aussi un {doublons} ; attention : multiplier les critères doublons peut conduire à des difficultés. Si vous dupliquez ces boucles dans la même page pour un autre usage, prenez soin à éviter ce critère ;
-  la BOUCLE_avec_articles ne récupère que les articles agés de moins de 3 mois (90 jours). En effet, nous ne voulons pas ici afficher l’intégralité des jeux de la même catégorie, mais uniquement ceux qui ont été modifiés récemment.

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

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