La pàgina de les seccions

Començarem amb un fitxer «rubrique.html» verge.

La primera versió del nostre fitxer serà molt senzilla. Integrem immediatament el BOUCLE_hierarchie, que aquí no presenta cap particularitat.

<html>
<title>[#NOM_SITE_SPIP]
<BOUCLE_titre(RUBRIQUES){id_rubrique}>#TITRE</BOUCLE_titre></title>
</head>

<body>
<blockquote>
     <BOUCLE_principale(RUBRIQUES){id_rubrique}>

		<BOUCLE_hierarchie(HIERARCHIE){" : "}>
		<a href="#URL_RUBRIQUE">#TITRE</a>
		</BOUCLE_hierarchie>

     <h1>#TITRE</h1>

     [(#LOGO_RUBRIQUE|right)]

     [(#TEXTE|justifier)]
 
     [<hr>(#NOTES)]

     </BOUCLE_principale>
</blockquote>
</body>
</html>

Si instal·leu aquesta pàgina al vostre lloc Web, no serà res d’espectacular...

Els articles que conté aquesta secció

Afegim la llista d’articles que conté aquesta secció. Situem aquest BOUCLE_articles al final del BOUCLE_principale (després del text i les seves notes).

...
	<B_articles>Les articles :
	<ul>
	<BOUCLE_articles(ARTICLES){id_rubrique}>
		<li> <a href="#URL_ARTICLE">#TITRE</a>
	</BOUCLE_articles>
	</ul>
	</B_articles>

</BOUCLE_principale>
...

En realitat, aquest bucle no té massa interès: mostra els articles sense cap mena d’ordre (no té en compte les paraules clau de tipus d’articles). De moment l’instal·lem així per tal de tenir una primera possibilitat de navegar pel nostre lloc Web. Retornarem a aquesta part una mica més endavant en el tutorial.

Les sub-seccions

Ara hem d’instal·lar el bucle de les sub-seccions (després del BOUCLE_articles):

...
	<B_sous_rubriques>Les sous-rubriques :
	<ul>
	<BOUCLE_sous_rubriques(RUBRIQUES){id_parent}{par titre}>
		<li> <a href="">#TITRE</a>
	</BOUCLE_sous_rubriques>
	</ul>
	<B_sous_rubriques>


</BOUCLE_principale>
...

Y aquí és quan trobem el primer problema veritable del nostre tutorial: les seccions que defineixen els tipus de jocs estan barrejades amb les seccions dedicades directament als jocs.

Per exemple, en l’estructura de demostració, la secció «Action/aventure» conté a la vegada, presentades exactament de la mateixa manera:
-  dues sub-seccions temàtiques («Exploració i enigmes» i «Supervivència i terror»),
-  i dues seccions de jocs («Devil May Cry» i «Soul Reaver 2»).

La presentació del bucle que hi ha més amunt ens dóna aquesta llista:
-  Devil May Cry,
-  Exploració i enigmes,
-  Soul Reaver 2,
-  Supervivència i terror.

Per tant, és forçosament necessari distingir amb tota claredat les seccions «categories de jocs» (útils bàsicament per la navegació) i les seccions «jocs» (que ens donen els títols dels jocs).

Per resoldre aquesta dificultat, utilitzarem el sistema de bucles. No necessitarem cap truc informàtic; només farà falta que entenguem molt bé la lògica del lloc i la lògica dels bucles.

La lògica del lloc: una secció «Joc» és una secció que conté articles; una secció de «categoria de jocs» no conté articles directament. És la definició del nostre lloc: tot article que faci referència a un joc està situat dins d’una secció que porta el nom del joc; d’aquesta manera una secció de categoria de joc només contindrà sub-seccions de categories i seccions que portin el nom dels jocs, però mai directament els articles (queda ben clar?). Per exemple, en el nostre cas:
-  «Soul Reaver 2» i «Devil May Cry» contenen els articles relacionats amb aquests jocs (tests, vistes prèvies, etc.);
-  «Supervivència i terror» i «Exploració i enigmes» per definició no contenen articles. Si hi ha jocs dins de «Supervivència i terror», els articles que hi fan referència es troben a les sub-seccions que portin el nom d’aquests jocs, però mai directament dins la secció «Supervivència...».

L’objectiu d’aquesta maniobra consistirà doncs en separar les seccions sense articles de les seccions amb articles. I el més senzill és fer dos bucles diferents.

Les seccions sense articles

Comencem per les sub-seccions que no contenen articles (és a dir, les grans categories del tipus «Supervivència i terror», «Exploració»...). Modifiquem el BOUCLE_sous_rubriques així:

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

		<BOUCLE_sans_articles(ARTICLES){id_rubrique}>
		</BOUCLE_sans_articles>
		<h3><a href="#URL_RUBRIQUE">#TITRE</a></h3>
		<//B_sans_articles>
		
	</BOUCLE_sous_rubriques>

El principi d’aquesta astúcia és simple:

-  a l’interior del BOUCLE_sous_rubriques, inserim un nou BOUCLE_sans_articles, que recupera els articles que conté. Fixeu-vos que l’interior del BOUCLE_sans_articles està buit: si la sub-secció conté articles, aquests darrers no es mostren (el bucle només serveix per controlar la seva presència);

-  el #TITRE del BOUCLE_sous_rubriques s’insereix dins el text opcional «sense» del BOUCLE_sans_articles. Just abans del <//B_sans_articles>. D’aquesta manera, el títol de la secció només es mostra si BOUCLE_sans_articles no conté cap article (és a dir, si el propi BOUCLE_sous_rubriques no conté cap article).

El BOUCLE_sous_rubriques, recupera absolutament totes les seccions (fins i tot la dels jocs). Però el #TITRE (amb els enllaços) només es mostra si el BOUCLE_sans_articles està buit.

Les seccions de joc (amb articles)

Apliquem el principi exactament a la inversa en un BOUCLE_jeux (que podem situar just abans del BOUCLE_sous_rubriques).

	<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}>
		<li><a href="#URL_ARTICLE">#TITRE</a>
		</BOUCLE_avec_articles>
		</ul>
		</B_avec_articles>
		
	</BOUCLE_jeux>

Aquesta vegada, el #TITRE de la secció està situat dins del text condicional «abans»; es mostra el #LOGO_RUBRIQUE (al final, evidentment, faran falta unes boniques taules per evitar les superposicions desgraciades). I, de passada, aprofitem per mostrar la llista dels articles del BOUCLE_avec_articles.

El BOUCLE_jeux i el BOUCLE_sous_rubriques són, de sortida, totalment idèntics: els seus criteris són els mateixos. A l’interior d’aquests bucles, per tant, es tracten les mateixes seccions. En canvi, els bucles BOUCLE_avec_articles i BOUCLE_sans_articles serveixen de «filtres»: agafen cadascuna de les seccions BOUCLE_jeux i BOUCLE_sous_rubriques, i verifiquen la presència o no d’articles.

Hauríem pogut utilitzar aquí el criteri {doublons}? No, ja que el primer bucle mostrat (BOUCLE_sous_rubriques) tracta bé totes les sub-seccions (solament el títol d’aquestes sub-seccions es mostra o no segons els casos). Atribuir-li un criteri {doublons} impediria després de tractar cap d’aquestes sub-seccions. A continuació, el BOUCLE_jeux associat a aquest criteri de {doublons} intentaria de recuperar totes les sub-seccions que no haguessin estat tractades pel primer bucle; però totes les sub-seccions han estat ja tractades. El BOUCLE_jeux no ens podria mostrar absolutament res.

Deixem ara aquesta pàgina «rubrique.html», per tornar-hi més endavant.

Autor merce Publié le : Mis à jour : 21/03/23

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