Et encore d’autres moyens de se compliquer la vie !

Noter les jeux, annoncer les dates de sortie

Notre site utilise désormais ce qui était prévu à l’origine :
-  le rubriquage thématique (par genre de jeux) ;
-  l’indication des machines concernées par chaque article ;
-  la gestion des types d’articles (tests, news, previews...).

L’étape suivante consistera à créer des navigations parallèles (naviguer selon une unique machine, ou selon un type d’articles).

Mais avant de nous lancer dans le développement de ces navigations transversales, compliquons-nous un peu l’affaire, en ajoutant deux autres éléments indispensables aux sites de jeux vidéo :
-  la note attribuée à un jeu ;
-  la date de sortie officielle du jeu.

Ces deux éléments devraient être, désormais, simples à installer avec le système des mots-clés. Ils permettront eux-même de proposer des navigations transversales (notamment une page des jeux ayant les meilleures notes, et une page d’annonce des prochaines sorties).

L’attribution d’une note à un jeu

Il est logique d’attribuer une note à la fin d’un test :
-  pour les previews, c’est trop tôt, puisqu’il ne s’agit pas d’une version définitive ; pour les autres types d’articles (news, soluces...), ça n’a tout simplement rien à voir ;
-  il est impossible d’attribuer une note à la rubrique-jeu, puisque cette rubrique peut présenter différentes versions d’un jeu.

Donc, nous décidons que, dans le fonctionnement de notre site, la note est liée à un article de test. Dans une même rubrique d’un jeu, puisqu’il peut y avoir plusieurs tests différents (selon les critiques, selon les machines...), il y aura donc plusieurs notes, associées à ces tests.

Arbitrairement, nous choisissons une notation sur 10 (de 1 pour nul, à 10 pour génial).

Retour à la page de gestion des mots-clés :
-  nous créons un groupe de mots intitulé « Note » ;
-  dans ce groupe de mots, nous créons 10 mots-clés, dont les noms sont successivement « 01 », « 02 », ..., « 09 », « 10 ». Ce qui donne :

image 120 x 146

On peut choisir, comme pour les machines, d’attribuer un logo différent à chaque note (par exemple des étoiles), et ensuite dans les squelettes utiliser les logos plutôt que le nombre indiqué par le mot-clé en toutes lettres. Par pure fainéantise, nous nous contenterons ici d’utiliser le texte des mots-clés.

Désormais, avant la publication d’un test, en plus de sélectionner les mots-clés correspondant au type de l’article (« Test », donc) et ceux des machines concernées, il faut penser à choisir une note. Si l’on veut un fonctionnement cohérent, il est évident qu’on ne doit sélectionner qu’une seule note par article.

Intégrer la note dans les squelettes

La boucle permettant d’afficher la note d’un article est très simple.

-  Dans « article.html », plaçons la note de l’article sous la signature de l’auteur (avant le #PS et les #NOTES) :

<BOUCLE_note(MOTS){id_article}{inverse}{type=Note}>
		[<p align="right"><b>NOTE : (#TITRE)/10</b>]
	</BOUCLE_note>

Ajoutons également la mention de la note dans les « autres tests de ce jeu ». La BOUCLE_tests est ainsi modifiée :

<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> 
		<BOUCLE_autre_note(MOTS){id_article}{inverse}{type=Note}>
			[ - NOTE : (#TITRE)/10]
		</BOUCLE_autre_note>
		- [(#DATE|affdate)]
		</BOUCLE_tests>
	</ul>
	</B_tests>

-  Dans « rubrique.html », cette même BOUCLE_tests est à remplacer directement.

Voilà, l’intégration d’une note de test n’a pas pris cinq minutes ! Tout cela étant trop facile, nous verrons par la suite comment exploiter ailleurs cette note attribuée aux jeux.

La date de sortie officielle des jeux

L’affichage de la date de sortie officielle des jeux est plus problématique. En effet, une date ne peut pas être elle-même un mot-clé (nous avons déjà souligné que les mots-clés devaient être des éléments stables de la structure : on ne va donc pas créer des mots-clés de dates !).

Il existe une possibilité : utiliser la date de première publication de certains articles. Problème : quels articles ?

-  Les dates de sortie sont connues (de manière plus ou moins approximative) longtemps à l’avance, donc on ne peut pas attendre qu’il y ait des articles consacrés au jeu pour pouvoir l’annoncer.

-  Les articles d’un jeu peuvent traiter d’une plateforme ou de plusieurs. Or les dates de sorties selon les plateformes est très variables. On peut donc difficilement utiliser des articles communs à plusieurs plateformes pour annoncer les dates. Par exemple, Alone in the Dark : the new nightmare, est très similaire entre ses versions Playstation 2 et Dreamcast, il est donc logique de consacrer un test unique aux deux versions ; en revanche, les dates de sorties sont différentes sur ces plateformes.

-  Tant que le jeu n’est pas commercialisé, les dates annoncées doivent être corrigées régulièrement (retards, plus grande précision...). Le webmestre doit donc facilement trouver où il doit modifier ces informations.

Dans la structure de notre site, on peut donc considérer que la date de sortie d’un jeu est une information indépendante des autres informations (tests, previews, etc.) ; nous ne pouvons donc pas utiliser la « date de première publication » d’un autre article pour indiquer cette date de sortie. Nous allons procéder de la façon suivante (il en existe certainement d’autres) :

-  nous créons un nouveau type d’article (en plus des tests, previews, etc.) ; installé dans le groupe « Type_article », nous le nommerons « Date_sortie » ;

-  dans la rubrique du jeu, nous créons autant d’articles nécessaires qu’il y a de versions du jeu avec des dates de sortie différentes. Ces articles sont vides : ils n’ont qu’un titre et une date de « publication » (fixée manuellement à la date de sortie du jeu). Son titre lui-même n’a aucune importance, nous ne l’afficherons pas sur le site public ; en revanche, ce titre facilitera la navigation dans le site privé ;

-  à chaque article associé à « Date_sortie », on attribue également le mot-clé de la machine concernée par cette date.

Voici par exemple comment procéder avec Resident Evil : Code Veronica :

-  créer un nouvel article dans la rubrique « Code Veronica » ;
-  titrer cet article « Sortie Veronica Dreamcast » (titre de convenance, sans autre intérêt que d’identifier ces articles dans l’espace privé) ;
-  attribuer les mots-clés « Dreamcast » et « Date_sortie » à cet article ;
-  « publier » l’article, et modifier sa date en « mai 2000 » (si l’on ne connait pas le jour exact, on peut sélectionner « n.c. » dans le menu déroulant du jour) ;

-  recommencer l’opération avec un nouveau article « Sortie Veronica PS2 » ;
-  lui attribuer les mots-clés « Playstation 2 » et « Date_sortie » ;
-  publier et modifier la date (13 septembre 2001).

Pour le premier article, cela donne :

image 300 x 232

L’auteur de ces articles est totalement indifférent (inutile de perdre du temps à le supprimer, de toute façon il ne sera pas utilisé).

Notez l’intérêt de notre façon d’afficher les articles d’une rubrique en fonction de certains types d’articles (tests, previews...) : les articles ayant pour mot-clé « Date_sortie » ne sont pas affichés (avec les squelettes standards de SPIP, ces « articles » pourtant vides de tout contenu seraient affichés comme les autres).

Afficher la date dans les articles

Lorsque l’on se trouve dans un article (d’un jeu), la (les) date(s) de sortie sont contenus dans des articles associés au mot « Date_sortie », situés dans la même rubrique. Pour connaître la date de sortie d’un jeu depuis un article de test (par exemple), il faut donc récupérer le (ou les) article(s) installés dans la même rubrique et ayant pour mot-clé « Date_sortie ».

Dans le squelette « article.html », insérons (par exemple juste après le titre) :

<BOUCLE_sortie(ARTICLES){id_rubrique}{titre_mot=Date_sortie}>
		<li> #TITRE :
		[<b>(#DATE|affdate)</b>]
		</BOUCLE_sortie>

Cependant, nous avions décidé de ne pas utiliser le titre de l’article contenant la date. Nous souhaitons en effet unifier la présentation de cette information, sans pour autant nous obliger à saisir le titre toujours de la même façon. Nous n’allons donc pas afficher le #TITRE de cet article-bidon (ni même le titre de la rubrique, nous connaissons déjà le titre du jeu, inutile de le rappeler ici). En revanche, pour différencier (éventuellement) les différentes dates de sorties en fonction des machines, nous allons insérer :

<BOUCLE_sortie(ARTICLES){id_rubrique}{titre_mot=Date_sortie}>
	<li> Date de sortie
		<BOUCLE_machine_sortie(MOTS){id_article}{type=Machines}{", "}>#TITRE</BOUCLE_machine_sortie> :
	[<b>(#DATE|affdate)</b>]
	</BOUCLE_sortie>

Ce qui lors de la visite donnera :
-  Date de sortie Playstation : 22 août 2001
-  Date de sortie Dreamcast : mai 2001

Cela ne nous satisfait pas encore (c’est un tutorial, nous avons le droit d’être exigeants !) : la BOUCLE_sortie affiche les dates de sortie sur toutes les machines ; or, notre article peut ne pas traiter de toutes ces machines. Nous voulons donc n’afficher que les dates de sortie correspondant aux machines traitées par l’article.

Attention, ça devient coton, et cela utilise une subtilité des boucles :

<BOUCLE_mac2(MOTS){id_article}{type=Machines}>
	<BOUCLE_sortie(ARTICLES){id_rubrique}{titre_mot=Date_sortie}>
	<BOUCLE_verifier_mot(ARTICLES){id_article}{id_mot}>
	<li> Date de sortie
		<BOUCLE_machine_sortie(MOTS){id_article}{type=Machines}{", "}>#TITRE</BOUCLE_machine_sortie> :
	[<b>(#DATE|affdate)</b>]
	</BOUCLE_verifier_mot>
	</BOUCLE_sortie>
</BOUCLE_mac2>

Vous reconnaissez les BOUCLE_sortie et BOUCLE_machine_sortie, que nous n’avons pas modifées. En revanche, deux boucles apparaissent.

(1) L’ensemble est placé dans une BOUCLE_mac2, qui va récupérer les mots-clés des machines associées à cet article. À l’intérieur de cette boucle, nous avons donc une certaine valeur pour « id_mot » (l’identifiant de chaque machine concernée par l’article).

(2) La BOUCLE_sortie, inchangée, récupère tous les articles de la rubrique associés au mot-clé « Date_sortie ». Notez bien : cette boucle n’utilise pas « id_mot », donc les articles de cette boucle sont à la fois des boucles associés au mot-clé dont « id_mot » et qui n’y sont pas associés. Second point important, c’est une boucle (ARTICLES), cette boucle ne renvoit aucune information sur les mots-clés ; donc la valeur « id_mot » fournie par BOUCLE_mac2 reste inchangée à l’intérieur de cette boucle.

(3) La BOUCLE_verif_mot est une subtilité intéressante : c’est une boucle (ARTICLES) sélectionnant l’article dont l’identifiant est « id_article » ; or nous sommes déjà dans la BOUCLE_sortie, qui a déjà retourné un article. Donc la BOUCLE_verif_mot retourne exactement le même résultat que la boucle précédente ! À cette différence que la BOUCLE_verif_mot instaure un critère supplémentaire, {id_mot}, l’article doit donc être associé au mot-clé « id_mot ». Résultat : si l’article retourné par BOUCLE_sortie est associé au mot-clé « id_mot », on continue ; si l’article de BOUCLE_sortie n’est pas associé, on s’arrête et on passe au suivant.

-  On peut ainsi dire que la BOUCLE_verif_mot est un filtre : elle prend l’article et vérifie s’il correspond au critère du mot-clé.

-  On peut le présenter autrement : BOUCLE_verif_mot est seulement un critère de sélection supplémentaire pour la BOUCLE_sortie. Le plus simple en effet aurait été de ne pas utiliser de BOUCLE_verif_mot, mais d’ajouter un critère à BOUCLE_sortie, ainsi :

<BOUCLE_sortie(ARTICLES){id_rubrique}{id_mot}{titre_mot=Date_sortie}>

C’est-à-dire : récupérer les articles de la même rubrique associés à la machine « id_mot » et au mot-clé « Date_sortie ». Cela aurait été plus direct, malheureusement SPIP n’accepte pas ce genre de constructions (il faut un seul critère portant sur les mots-clés dans une boucle). Une telle boucle est donc refusée par SPIP.

Vous remarquerez que nous avons empilé quatre boucles successives pour afficher une information aussi peu importante que la date de sortie d’un jeu ! On peut le déplorer, mais on peut préférer penser que, si l’on comprend bien la logique des boucles, les possibilités de SPIP sont beaucoup plus étendues que ce que les squelettes standards laissent supposer.

N.B. En utilisant un peu de code PHP très simple, on aurait obtenu le même résultat avec une seule boucle. Dans le développement d’un site, on aura certainement avantage à gagner du temps en préférant la version de raccourcie utilisant un peu de PHP. Mais nous tenions à montrer que des certains résultats peuvent très bien se passer de PHP.

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

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