Un forum per ogni gioco

Per il momento il nostro sito non permette ai visitatori di partecipare. Tuttavia, questo genere di sito si presta particolarmente bene ai forum aperti ai visitatori:
-  innanzitutto perché su questo tipo di argomento agli utenti piace dare il proprio parere; i forum dei videogiochi sono molto attivi...
-  perché è un elemento indispensabile al contenuto editoriale del sito: in effetti, è impossibile prevedere tutte le domande riguardanti un gioco (trucchi, suggerimenti, bloccato a quel livello, come riconfigurare la scheda grafica RadeTI 2525 del proprio PC...); i forum sono il luogo indispensabile per questo tipo di domande/risposte.

Prima di integrare dei forum sul nostro sito dobbiamo definire dove e come farlo.

-  Prima domanda: dove?

Mediante i modelli forniti con il pacchetto di SPIP, abbiamo preso l’abitudine di inserire i forum direttamente sotto ogni articolo. Ora, nel nostro caso la struttura editoriale è completamente diversa: tutti gli articoli riguardanti un gioco sono raggruppati in una rubrica. Di sicuro potremmo continuare a inserire i forum sotto ad ogni articolo, ma forse questa soluzione non sarà molto efficace: piuttosto che dare un commento su un articolo in particolare, il visitatore vorrà più probabilmente discutere del gioco "in generale".

Noi decidiamo (ancora una volta una scelta puramente soggettiva!) che i forum non riguarderanno ogni articolo (ogni test, ogni anteprima, ecc.), ma il gioco nel suo insieme. Ovvero, la rubrica del gioco. In ogni articolo faremo un link verso una pagina comune che mostri il forum della rubrica.

-  Seconda domanda: come?

La presentazione del forum è importante: bisogna mostrare tutto insieme (è sempre molto pratico), oppure è meglio mostrare prima un elenco dei titoli dei messaggi e poi una pagina specifica per ogni messaggio?

Su un sito di videogiochi possiamo prevedere dei forum molto attivi, con numerosi messaggi, alcuni molto lunghi (alcuni visitatori vogliono inviare la critica completa di un gioco, una soluzione interminabile...). Impossibile quindi visualizzare tutto il contenuto di tutti i messaggi su una sola pagina.

Pertanto, scegliamo di presentare prima l’elenco dei messaggi, con il solo titolo; poi, creiamo una seconda pagina che mostri ogni singolo messaggio.

La pagina forum_gioco.php3

La pagina che mostrerà l’elenco completo dei messaggi di un forum sarà quindi la pagina "forum_gioco.php3". Questa pagina viene chiamata con un numero di rubrica (poiché la rubrica contiene tutti gli articoli del gioco).

Cominciamo con l’inserire il link verso questa pagina nella navigazione del nostro sito.

Sulla pagina "article.html", aggiungiamo il link verso il forum del gioco. Inseriamo (per esempio dopo la visualizzazione delle note, quindi dopo il segnaposto #NOTES):

<p><b><a href="forum_gioco.php3?id_rubrique=#ID_RUBRIQUE">Il forum di questo gioco</a></b>

Accontentiamoci per il momento di quest’unico link di navigazione. In effetti, per realizzare una visualizzazione più completa (in particolare il numero di messaggi), abbiamo bisogno di creare messaggi di forum al fine di testare la nostra interfaccia, e per il momento questi forum sono completamente vuoti.

Creiamo quindi il nostro modello dei forum...

Cominciamo, come al solito, dal file di chiamata: "forum_gioco.php3":

<?
$fond = "forum_gioco";
$delais = 24 * 3600;

include ("inc-public.php3");
?>

Il modello forum_gioco.html

Ora creiamo il file "forum_gioco.html". Per il momento esso è molto semplice:

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

<body>

<a href="index.php3">#NOM_SITE_SPIP</a>

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

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

     <h1>FORUM: <a href="#URL_RUBRIQUE">#TITRE</a></h1>

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

Questo primo modello, molto semplice, visualizza:
-  il ritorno alla home page del sito;
-  il percorso gerarchico che porta a questo gioco;
-  il titolo del gioco.

Grazie al ciclo BOUCLE_principale, siamo dentro la rubrica che riguarda il gioco.

Per il momento, il nostro forum è completamente vuoto. Prima di creare la visualizzazione prevista (visualizzare unicamente l’elenco dei messaggi), creiamo un’interfaccia che permetta di realizzare un forum completo. Grazie ad essa potremo "alimentare" il nostro forum, e in seguito creare l’interfaccia voluta.

Inseriamo il link che ci permetterà di inviare il nostro primo messaggio:

<h3>[<a href="forum.php3?(#PARAMETRES_FORUM)">Invia un messaggio</a>]</h3>

In maniera automatica, #PARAMETRES_FORUM indicherà che si tratta di messaggi collegati a una rubrica, poiché il nostro ciclo BOUCLE_principale è di tipo (RUBRIQUES).

Mostriamo il titolo di questi primi messaggi:

<B_thread>
	<ul>
	<BOUCLE_thread(FORUMS){id_rubrique}{par date}{inverse}>
<li>#TITRE
		</BOUCLE_thread>
	</ul>
	</B_thread>

Aggiungiamo la possibilità di rispondere a questi messaggi:

<B_thread>
	<ul>
	<BOUCLE_thread(FORUMS){id_rubrique}{par date}{inverse}>
	<p><li>#TITRE
	<p align="right"><a href="forum.php3?#PARAMETRES_FORUM">rispondi a questo messaggio</a>
	</BOUCLE_thread>
	</ul>
	</B_thread>

In tal modo, possiamo rispondere ai messaggi di "primo" livello (quelli che definiscono i "thread", ovvero i messaggi che iniziano una nuova discussione), ma noi non li facciamo apparire.

Visualizziamo le risposte:

<B_thread>
	<ul>
	<BOUCLE_thread(FORUMS){id_rubrique}{par date}{inverse}>
	<p><li>#TITRE
	
	<p align="right"><a href="forum.php3?#PARAMETRES_FORUM">rispondi a questo messaggio</a>
	
	<B_risposte>
	<ul>
	<BOUCLE_risposte(FORUMS){id_parent}{par date}>
		<p><li>#TITRE
		<a href="forum.php3?#PARAMETRES_FORUM">rispondi a questo messaggio</a>
	</BOUCLE_risposte>
	</ul>
	</B_risposte>
	
	</BOUCLE_thread>
	</ul>
	</B_thread>

Oramai visualizziamo le risposte ai thread, possiamo rispondere a queste risposte, ma senza visualizzarle. Per visualizzarle dobbiamo aggiungere un ciclo ricorsivo, cioè il ciclo BOUCLE_risposte deve chiamare se stesso; ciò ci permette di visualizzare tutti i messaggi insieme.

Modifichiamo il ciclo BOUCLE_risposte nel modo seguente:

<B_risposte>
	<ul>
	<BOUCLE_risposte(FORUMS){id_parent}{par date}>
		<p><li>#TITRE
		<a href="forum.php3?#PARAMETRES_FORUM">rispondi a questo messaggio</a>
		
		<BOUCLE_risp_messaggi(boucle_risposte)></BOUCLE_risp_messaggi>
		
		
	</BOUCLE_risposte>
	</ul>
	</B_risposte>

Abbiamo aggiunto all’interno del ciclo BOUCLE_risposte un ciclo BOUCLE_risp_messaggi, che chiama il ciclo BOUCLE_risposte. Ciò permette di visualizzare le risposte ai messaggi del ciclo BOUCLE_risposte, in maniera ricorsiva (questo ciclo viene eseguito fintanto che non si ottengono più risposte).

Giunti a questo stadio, per i bisogni del nostro sviluppo, è necessario prendersi una pausa e dedicare un po’ di tempo a scrivere numerosi messaggi in un forum, con numerosi argomenti di discussione (thread), con risposte alle risposte... in maniera da simulare un forum completo. Ciò ci permetterà di creare la nostra interfaccia grafica più logicamente.

Ricominciamo...

Dopo questa fase, durante la quale abbiamo alimentato il nostro forum con molti messaggi, ricominciamo la nostra impaginazione, questa volta nell’ottica di quel che avevamo previsto inizialmente: la pagina "forum_gioco" visualizzerà solo i titoli dei messaggi, e un’altra pagina visualizzerà ogni messaggio.

Poiché i nostri cicli precedenti non visualizzavano informazioni, le modifiche sono poco importanti:
-  è necessario mostrare il titolo (#TITRE) come link verso la pagina di questo messaggio (per far ciò decidiamo di utilizzare una pagina chiamata "messaggio.php3");
-  è necessario mostrare il nome (#NOM) dell’autore del messaggio e la data (#DATE) di invio del messaggio;
-  è necessario eliminare la dicitura "rispondi a questo messaggio".

Ne approfittiamo per modificare la presentazione grafica. I tag HTML <ul> e <li> sono sufficienti per presentare la struttura logica, ma graficamente non sono belli. Pertanto, li sostituiamo con dei fogli di stile molto semplici.

In conclusione, il nostro codice diventa:

<BOUCLE_thread(FORUMS){id_rubrique}{par date}{inverse}>
	<p>
	<div style="border: solid black 1px; background-color: #CCCCCC; padding: 3px; width:100%">
	<a href="messaggio.php3?id_forum=#ID_FORUM">#TITRE</a>
	[| (#NOM)] | [(#DATE|affdate)]
	</div>
	
	
	<B_risposte>
	<div style="margin-left: 15px">
	<BOUCLE_risposte(FORUMS){id_parent}{par date}>
		<div style="border-left: solid black 1px; border-bottom: solid black 1px; border-right: solid black 1px; padding: 3px; width:100%">
		<a href="messaggio.php3?id_forum=#ID_FORUM">#TITRE</a>
		[| (#NOM)] | [(#DATE|affdate)]
		</div>
		
		<BOUCLE_risp_messaggi(boucle_risposte)></BOUCLE_risp_messaggi>
		
	</BOUCLE_risposte>
	</div>
	</B_risposte>
	
	</BOUCLE_thread>

Nota sugli stili. Abbiamo inserito qui gli stili direttamente nella dichiarazione del tag <div>. Si potrà anche raggrupparli in fogli di stile all’inizio del file. Tuttavia, durante lo sviluppo della pagina, è sempre pratico poterli modificare direttamente nel luogo dove si trova l’informazione. D’altronde, l’uso degli stili pone difficoltà di compatibilità con Netscape 4.7: non solo esso non usa tutti gli stili, ma in aggiunta alcuni stili provocano degli errori di visualizzazione. Nell’esempio sopra riportato abbiamo scelto stili che non provocano questi errori.

La nostra pagina che visualizza tutti i messaggi di un forum è ora terminata. Nel caso di un sito reale, si guadagnerebbe a mostrare più link verso gli articoli di questa rubrica (i test, le anteprime, un promemoria delle date di uscita); come fatto anche in altra sede, lasciamo questo compito al lettore.

Visualizzare ogni messaggio: messaggio.php/messaggio.html

Oramai dobbiamo visualizzare il testo di ogni messaggio, con la possibilità di rispondere ad esso. Siccome abbiamo creato i link sulla pagina precedente, sappiamo che ciò si realizza con un paio di file: "messaggio.php3" e "messaggio.html", chiamati da un "id_forum" (id_forum è il numero di ogni messaggio del forum).

Il file "messaggio.php3":

<?
$fond = "messaggio";
$delais = 24 * 3600;

include ("inc-public.php3");
?>

Il file "messaggio.html" contiene il modello:

<html>
<title>[#NOM_SITE_SPIP]
<BOUCLE_titolo(FORUMS){id_forum}>#TITRE</BOUCLE_titolo></title>
</head>

<body>

<a href="index.php3">#NOM_SITE_SPIP</a>

<blockquote>
<BOUCLE_principale(FORUMS){id_forum}>

	<h3>#TITRE</h3>
	[(#DATE|affdate)][, par <A HREF="mailto:#EMAIL">(#NOM)</A>]
	[<BR><A HREF="#URL_SITE">(#NOM_SITE)</A>]
	
	<p>#TEXTE
	
</BOUCLE_principale>
</blockquote>
</body>
</html>

Questa prima versione visualizza:
-  il titolo della pagina (tra <title> e </title>);
-  il link verso la home page del sito;
-  il titolo, il testo, la data, l’autore e un sito Web di questo messaggio.

Dal lato della navigazione nel sito, rimane da fare ancora tutto... Noi mostreremo la dicitura del gioco discusso in questo messaggio. Nel ciclo BOUCLE_principale, appena prima del segnaposto #TITRE del messaggio, aggiungiamo l’indicazione del titolo del gioco (con un link verso la rubrica del gioco) e un link verso la pagina che mostra tutti i messaggi:

<BOUCLE_larubrica(RUBRIQUES){id_rubrique}>
		<h3>forum del gioco: <a href="#URL_RUBRIQUE">#TITRE</a></h3>
		visualizza <a href="forum_gioco.php3?id_rubrique=#ID_RUBRIQUE">tutti i messaggi</a>
	</BOUCLE_larubrica>

Ricopiamo il nostro ciclo tradizionale BOUCLE_gerarchia che permette di indicare il percorso gerarchico degli stili del gioco:

<BOUCLE_larubrica(RUBRIQUES){id_rubrique}>
		<BOUCLE_gerarchia(HIERARCHIE){": "}>
		<a href="#URL_RUBRIQUE">#TITRE</a>
		</BOUCLE_gerarchia>
		<h3>forum del gioco: <a href="#URL_RUBRIQUE">#TITRE</a></h3>
		visualizza <a href="forum_gioco.php3?id_rubrique=#ID_RUBRIQUE">tutti i messaggi</a>
	</BOUCLE_larubrica>

Adesso vogliamo mostrare la gerarchia dei messaggi che conducono al nostro messaggio (se si tratta di una risposta a un altro messaggio noi vogliamo mostrare il link verso questo messaggio "parent" [1]). Inseriamo (dopo il link "visualizza tutti i messaggi" e prima del segnaposto #TITRE del messaggio attuale):

<BOUCLE_parent(FORUMS){id_enfant}>
			<br><a href="messaggio.php3?id_forum=#ID_FORUM">#TITRE</a>
		[| (#NOM)] | [(#DATE|affdate)]
	</BOUCLE_parent>

Nota: il criterio {id_enfant} applicato al ciclo di tipo (FORUMS) è stato introdotto nella versione 1.3 di SPIP. Questo criterio permette di chiamare il messaggio al quale risponde il messaggio attuale. (Un criterio simile esiste per il ciclo di tipo (RUBRIQUES), noi lo utilizziamo nel file "article.html" per "salire di un livello" nella gerarchia delle rubriche. Curiosamente, avevamo dimenticato questo criterio nei cicli dei forum...)

Qui noi mostriamo il messaggio al quale risponde il messaggio del ciclo BOUCLE_principale. Ciò non ci basta, vogliamo mostrare tutta la successione di messaggi fino al nostro messaggio principale (se il messaggio visualizzato grazie al ciclo BOUCLE_parent è già una risposta, vogliamo ancora salire di un livello, e così via fino al primo messaggio del thread).

A tal fine utilizziamo semplicemente un ciclo ricorsivo, come abbiamo fatto per il ciclo BOUCLE_risposte nel file "forum_gioco.html". Tuttavia, invertiamo il principio logico, poiché invece di "scendere" nella gerarchia dei messaggi noi la "risaliamo". Affinché la presentazione sia omogenea, mettiamo la chiamata del ciclo ricorsivo prima della visualizzazione del titolo (#TITRE) del messaggio (i messaggi "parent" devono essere visualizzati prima del titolo della loro risposta):

<BOUCLE_parent(FORUMS){id_enfant}>
		<BOUCLE_per_parent(boucle_parent)></BOUCLE_per_parent>
		<br><a href="messaggio.php3?id_forum=#ID_FORUM">#TITRE</a>
		[| (#NOM)] | [(#DATE|affdate)]
	</BOUCLE_parent>

Questo ciclo è sufficiente per visualizzare la navigazione e la struttura logica nei messaggi. Tuttavia, graficamente ciò non fa al caso nostro. In effetti, per ben marcare il fatto che si tratta di una concatenazione di risposte successive, noi vogliamo ripristinare il piccolo rientro a destra di ogni risposta (come sulla pagina "forum_gioco.html").

Pertanto, utilizziamo uno stile provocante, ad ogni chiamata del ciclo ricorsivo, un rientro verso sinistra (di 15 punti, poiché è il rientro utilizzato nella pagina "forum_gioco.html"). Noi ne approfittiamo per visualizzare il titolo (#TITRE) del messaggio nello stesso stile di questa pagina (bordino a sinistra e sotto):

<B_parent>
	<div style="margin-left:-15px">
	<BOUCLE_parent(FORUMS){id_enfant}>
		<BOUCLE_per_parent(boucle_parent)></BOUCLE_per_parent>
		
		<div style="border-left: solid black 1px; border-bottom: solid black 1px; border-right: solid black 1px; padding: 3px; width:100%">
		<a href="messaggio.php3?id_forum=#ID_FORUM">#TITRE</a>
		[| (#NOM)] | [(#DATE|affdate)]
		</div>

	</BOUCLE_parent>
	</div>
	</B_parent>

La visualizzazione diventa più omogenea, con il rientro verso sinistra e i bordini, ma non è ancora perfetta: questo rientro va verso il margine sinistro della pagina, poiché si rientra verso sinistra, senza avere prima fatto rientrare tutta la pagina verso destra (se consideriamo un valore di margine, possiamo considerare che il margine sinistro diventa "negativo": inizialmente un margine uguale a 0, poi -15, poi -30...).

Quindi dobbiamo far rientrare tutto verso destra. Noi non possiamo farlo all’interno del ciclo BOUCLE_parent, perché così facendo rientreremo, ad ogni ricorsività, una volta verso sinistra e una volta verso destra; i due rientri si annullerebbero.

Quindi creiamo un nuovo ciclo, prima del ciclo che visualizza i parent, il cui unico scopo è di visualizzare i <div> destinati a provocare la visualizzazione verso destra.

Tutta la pagina sarà rientrata verso destra (se ci sono tre messaggi prima di arrivare al messaggio principale, il rientro totale sarà di 45 punti verso destra). I messaggi parent partiranno da questo valore per rientrare verso sinistra: il primo messaggio parent rientrerà a sinistra, con un margine totale di 30 punti verso destra (45 - 15), il secondo rientrerà di 15 punti, l’ultimo di 0 punti.

Il nostro codice diventa:

<BOUCLE_rientra_destra(FORUMS){id_enfant}>
	<div style="margin-left: 15px">
		<BOUCLE_ricorsivo_rientra_destra(boucle_rientra_destra)></BOUCLE_ricorsivo_rientra_destra>
	</BOUCLE_rientra_destra>
	
	<B_parent>
	<div style="margin-left:-15px">
	<BOUCLE_parent(FORUMS){id_enfant}>
		<BOUCLE_per_parent(boucle_parent)></BOUCLE_per_parent>
		
		<div style="border-left: solid black 1px; border-bottom: solid black 1px; border-right: solid black 1px; padding: 3px; background-color: #CCCCCC; width:100%">
		<a href="messaggio.php3?id_forum=#ID_FORUM">#TITRE</a>
		[| (#NOM)] | [(#DATE|affdate)]
		</div>

	</BOUCLE_parent>
	</div>
	</B_parent>

Il ciclo BOUCLE_rientra_destra è un ciclo ricorsivo, simile a quello destinato a visualizzare i messaggi parent. La differenza qui sta nel contenuto: per ogni messaggio parent, invece di mostrare il titolo del messaggio esso mostra solo un <div> che provoca il rientro verso destra.

Poiché abbiamo provocato un rientro a destra, è necessario eseguire l’operazione inversa chiudendo tutti questi <div...>. Ciò si fa usando lo stesso ciclo, che questa volta contiene i tag </div>. Ma dove mettiamo questo ciclo? Ci sembra logico visualizzare il testo del messaggio principale con un rientro a destra: esso apparirà molto distintamente come risposta all’ultimo messaggio mostrato dal ciclo BOUCLE_parent.

Quindi, appena dopo il testo (#TEXTE) del messaggio principale inseriamo il codice seguente:

<BOUCLE_rientra_sinistra(FORUMS){id_enfant}>
	</div>
		<BOUCLE_ricorsivo_rientra_sinistra(boucle_rientra_sinistra)></BOUCLE_ricorsivo_rientra_sinistra>
	</BOUCLE_rientra_sinistra>

Adesso vogliamo visualizzare le risposte al messaggio principale. In tal modo potremo non solo "salire" nella gerarchia (con il ciclo BOUCLE_parent), ma anche "scenderla".

A tal fine, è sufficiente ricopiare il ciclo BOUCLE_risposte ricorsivo della pagina "forum_gioco.html". Noi inseriamo questo codice appena dopo il segnaposto #TEXTE del messaggio principale, e prima del rientro verso sinistra (è logico che queste risposte siano rientrate a destra del messaggio principale):

<B_risposte>
	<div style="margin-left: 15px">
	<BOUCLE_risposte(FORUMS){id_parent}{par date}>
		<div style="border-left: solid black 1px; border-bottom: solid black 1px; border-right: solid black 1px; padding: 3px; width:100%">
		<a href="messaggio.php3?id_forum=#ID_FORUM">#TITRE</a>
		[| (#NOM)] | [(#DATE|affdate)]
		</div>
		
		<BOUCLE_risp_messaggi(boucle_risposte)></BOUCLE_risp_messaggi>
		
	</BOUCLE_risposte>
	</div>
	</B_risposte>

Infine, non ci rimane che visualizzare le risposte situate allo "stesso livello" gerarchico del messaggio principale (ovvero: se il nostro messaggio principale è una risposta a un messaggio, vogliamo visualizzare i link verso le altre risposte a questo messaggio).

Visualizziamo tutte le altre risposte, inserendo questo codice appena prima del segnaposto #TITRE del nostro messaggio principale:

<BOUCLE_livello(FORUMS){meme_parent}{par date}{exclus}>
		<div style="border-left: solid black 1px; border-bottom: solid black 1px; border-right: solid black 1px; padding: 3px; width:100%">
		<a href="messaggio.php3?id_forum=#ID_FORUM">#TITRE</a>
		[| (#NOM)] | [(#DATE|affdate)]
		</div>
	</BOUCLE_livello>

Con il rientro che abbiamo creato precedentemente tutto ciò ha un effetto migliore...

Miglioriamo ancora la nostra presentazione: visualizziamo al di sopra del nostro messaggio principale solo i messaggi inviati prima di questo messaggio. Per fare ciò aggiungiamo un criterio al nostro ciclo BOUCLE_livello:

<BOUCLE_livello(FORUMS){meme_parent}{par date}{age_relatif>0}{exclus}>

Il criterio {age_relatif} (apparso in SPIP 1.3) è simile al criterio solito {age}. Tuttavia, mentre {age} confronta la data dell’elemento (articolo, messaggio del forum, ecc.) alla data attuale (oggi), {age_relatif} confronta questa data alla data dell’elemento corrente: nel nostro caso, poiché siamo nel ciclo BOUCLE_principale che mostra il messaggio principale, noi selezioniamo gli altri messaggi confrontando la loro data alla data del messaggio principale. Con {age_relatif>0}, noi recuperiamo solo i messaggi posteriori al messaggio principale.

Logicamente, creiamo un ciclo con il criterio di età relativa opposto, dopo i messaggi di BOUCLE_risposte.

<BOUCLE_livello_dopo(FORUMS){meme_parent}{par date}{age_relatif<=0}{exclus}>
		<div style="border-left: solid black 1px; border-bottom: solid black 1px; border-right: solid black 1px; padding: 3px; width:100%">
		<a href="messaggio.php3?id_forum=#ID_FORUM">#TITRE</a>
		[| (#NOM)] | [(#DATE|affdate)]
		</div>
	</BOUCLE_livello_dopo>

Non ci rimane altro che rielaborare un poco la presentazione del messaggio principale (mettiamo anch’esso all’interno di un bordino nero), e aggiungere il link "Rispondi a questo messaggio":

<div style="border-left: solid black 1px; border-bottom: solid black 1px; border-right: solid black 1px; padding: 3px; width:100%">
	<h2>#TITRE</h2>
	[(#DATE|affdate)][, par <A HREF="mailto:#EMAIL">(#NOM)</A>]
	[<BR><A HREF="#URL_SITE">(#NOM_SITE)</A>]
	
	<p>#TEXTE	
	<p align="right"><b>[<a href="forum.php3?(#PARAMETRES_FORUM)">Rispondi a questo messaggio</a>]</b>
	</div>
image 420 x 400

I nostri due modelli che permettono di gestire i forum di un gioco sono terminati. Tutto ciò può apparire un po’ complicato, ma bisogna considerare che abbiamo deciso di raffinare la presentazione della struttura. Avremmo potuto accontentarci di un’interfaccia di navigazione molto più spartana.

Riprendiamo l’inserimento in repertorio di questo forum nelle altre pagine del sito.

Nella pagina "article.html", modifichiamo il nostro link e aggiungiamo un ciclo:

<p><b><a href="forum_gioco.php3?id_rubrique=#ID_RUBRIQUE">Il forum di questo gioco</a></b>
	<BOUCLE_forum(FORUMS){id_rubrique}{plat}>
	</BOUCLE_forum>
	(#TOTAL_BOUCLE messaggi)</B_forum>

Il ciclo BOUCLE_forum non visualizza nulla, noi faremo uso solo del testo condizionale dopo. Il criterio {plat} di questo ciclo di forum indica che noi vogliamo recuperare tutti i messaggi del forum (senza questo criterio noi otterremmo solo i thread; qui noi recuperiamo anche i messaggi che sono risposte ad altri messaggi). Dopo aver eseguito questo ciclo (che non mostra niente) possiamo visualizzare nel testo opzionale il numero totale dei risultati, grazie al segnaposto #TOTAL_BOUCLE, cioè il numero di messaggi nel forum.

Nel file "rubrique.html", ciò diventa un po’ più comnplicato. In effetti, nella stessa maniera in cui noi abbiamo stabilito una differenza di presentazione tra le rubriche di navigazione (attraverso categorie principali di giochi) e le rubriche di giochi (contenenti gli articoli), noi non vogliamo mostrare un link verso un forum di discussione se esso non è la rubrica del gioco. Per fare ciò, creiamo un ciclo che va a verificare la presenza di almeno un articolo nella rubrica, e il nostro link verso il forum verrà mostrato solo se questo ciclo (BOUCLE_test_gioco) contiene almeno un elemento. Pertanto, inseriamo il codice seguente dopo il ciclo BOUCLE_siti e appena prima della fine del ciclo BOUCLE_gli_articoli:

<BOUCLE_test_gioco(ARTICLES){id_rubrique}{0,1}>
		</BOUCLE_test_gioco>
			<p><b><a href="forum_gioco.php3?id_rubrique=#ID_RUBRIQUE">Il forum di questo gioco</a></b>
		</B_test_gioco>

In questa sede eliminiamo la visualizzazione del numero dei messaggi: siamo all’interno del testo opzionale del ciclo BOUCLE_test_gioco, e l’inserimento di un nuovo ciclo in questo posto è sempre sconsigliata (in particolare, il valore #TOTAL_BOUCLE sarebbe quello del ciclo BOUCLE_test_gioco, e non il numero di messaggi nel forum).

Ovviamente, potremo completare questa procedura aggiungendo questi link verso i forum su altre pagine. Per esempio, la tabella degli annunci di uscita dei giochi.

Note

[1In italiano messaggio "genitore". Parent è un termine inglese comunemente usato in informatica con il senso di "livello precedente", in abbinamento al termine "child" (enfant in francese), ovvero "livello successivo", N.d.T.

Autore Fausto Barbarito Publié le : Mis à jour : 26/10/12

Traductions : عربي, català, italiano