Ritorniamo al file "rubrique.html". L’avevamo lasciato con un misero ciclo BOUCLE_articoli, inutile per il nostro sito poiché non ordinava gli articoli per categoria.
La vita è bella: abbiamo appena finito di programmare tale funzionalità per i nostri articoli!
È sufficiente copiare e incollare il blocco che ci interessa, inserirlo al posto del ciclo BOUCLE_articoli (che quindi scompare), e di vedere se è necessaria qualche modifica. Il risultato è il seguente:
<BOUCLE_gli_articoli(RUBRIQUES){id_rubrique}>
<B_test><p>I test di questo gioco:
<ul>
<BOUCLE_test(ARTICLES){id_rubrique}{titre_mot=Test}>
<li>
<BOUCLE_test_piattaforme(MOTS){id_article}{type=Piattaforme}>
[(#LOGO_MOT)]
</BOUCLE_test_piattaforme>
<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
</BOUCLE_test>
</ul>
</B_test>
<B_anteprime><p>Le anteprime di questo gioco:
<ul>
<BOUCLE_anteprime(ARTICLES){id_rubrique}{titre_mot=Anteprima}>
<li>
<BOUCLE_anteprime_piattaforme(MOTS){id_article}{type=Piattaforme}>
[(#LOGO_MOT)]
</BOUCLE_anteprime_piattaforme>
<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
</BOUCLE_anteprime>
</ul>
</B_anteprime>
<B_soluzioni><p>Le soluzioni di questo gioco:
<ul>
<BOUCLE_soluzioni(ARTICLES){id_rubrique}{titre_mot=Soluzione}>
<li>
<BOUCLE_soluzioni_piattaforme(MOTS){id_article}{type=Piattaforme}>
[(#LOGO_MOT)]
</BOUCLE_soluzioni_piattaforme>
<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
</BOUCLE_soluzioni>
</ul>
</B_soluzioni>
<B_trucchi><p>I trucchi e i suggerimenti di questo gioco:
<ul>
<BOUCLE_trucchi(ARTICLES){id_rubrique}{titre_mot=Trucchi}>
<li>
<BOUCLE_trucchi_piattaforme(MOTS){id_article}{type=Piattaforme}>
[(#LOGO_MOT)]
</BOUCLE_trucchi_piattaforme>
<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
</BOUCLE_trucchi>
</ul>
</B_trucchi>
<BOUCLE_news(ARTICLES){id_rubrique}{titre_mot=News}{par date}{inverse}{0,1}>
<p><a href="news_gioco.php3?id_rubrique=#ID_RUBRIQUE">Le news di questo gioco</a> - ultimo aggiornamento: [(#DATE|affdate)]
</BOUCLE_news>
</BOUCLE_gli_articoli>
Le modifiche effettuate sono:
- inutile cambiare la richiesta {id_rubrique}
, poiché negli articoli ci basavamo già su questa rubrica;
- cancelliamo tutti i criteri {doublons}
, perché in questa sede non sono utili (non ci sono articoli già mostrati); inoltre si evita il rischio di conflitti con gli sviluppi futuri della nostra pagina;
- il tutto viene inserito in un ciclo principale BOUCLE_gli_articoli. Cosa fa questo ciclo? Sinceramente parlando, nulla: esso rinvia la rubrica nella quale già ci troviamo. Ma ci sarà utile in seguito...
L’altro punto debole della nostra pagina era il ciclo BOUCLE_giochi, nel quale il ciclo BOUCLE_con_articoli approfittava del suo passaggio per mostrare l’elenco degli articoli della sotto-rubrica senza effettuare un ordinamento. Ora, ordinare gli articoli di una rubrica è quel che abbiamo appena fatto sopra.
Quindi, modifichiamo il ciclo BOUCLE_giochi nel modo seguente:
<BOUCLE_giochi(RUBRIQUES){id_parent}{par titre}>
<B_con_articoli>
<h4><a href="#URL_RUBRIQUE">#TITRE</a></h4>
[(#LOGO_RUBRIQUE|right)]
<ul>
<BOUCLE_con_articoli(ARTICLES){id_rubrique}{0,1}>
<BOUCLE_ricorsivo(boucle_gli_articoli)></BOUCLE_ricorsivo>
</BOUCLE_con_articoli>
</ul>
</B_con_articoli>
</BOUCLE_giochi>
Adesso il ciclo BOUCLE_con_articoli è effettuato una sola volta (su di un solo articolo), e ciò è sufficiente per sapere se esso contiene un articolo. Vediamo apparire un ciclo BOUCLE_ricorsivo: si tratta di un ciclo che riproduce esattamente il comportamento del ciclo BOUCLE_gli_articoli, a partire dal luogo in cui si trova (cioè, che esso si avvia non più dalla rubrica principale, ma dalla sotto-rubrica). L’utilità di limitare il ciclo BOUCLE_con_articoli a un unico elemento è ora chiara: senza tale limite, il ciclo BOUCLE_ricorsivo sarebbe eseguito tante volte quanti sono gli articoli nella sotto-rubrica.
Ovviamente, il risultato grafico di questo esempio è ignobile: troppo carico e poco chiaro. Diciamo che sarebbe interessante utilizzare un "ciclo ricorsivo" in questo tutorial...