Programmare template in Twig

Programmare template in Twig

articoli software

Come ho già scritto altrove, uno dei miei punti di riferimento per quanto riguarda il blogging è kottke.org.

Kottke.org è infatti uno dei blog più antichi del web, fondato nel 1998 da Jason Kottke. L'autore cura personalmente i contenuti, che coprono una vastissima gamma di argomenti, tra cui arte, tecnologia, scienza, cultura visiva, design, musica, cibo, architettura, sport e attualità. Alla data in cui scrivo sul sito ci sono oltre 38mila post. Il suo modo di scrivere e curare contenuti ha influenzato tutto il web e ha contribuito a formare intere generazioni di blogger.

Dando un'occhiata a com'è strutturato, ho notato la sua pagina con l'archivio dei post, organizzata per data e per tag: https://kottke.org/everfresh.

Ho pensato: «Perché non farne una anche per il mio blog?»

In realtà nella barra laterale del blog ci sono già i tag e i link agli articoli degli ultimi mesi, che mostrano tuttavia soltanto gli ultimi 12 mesi con articoli pubblicati. Mi piaceva l'idea di avere invece una pagina dedicata con il calendario completo, dall'inizio, mese per mese.

Questo sito è basato su Grav CMS, come spiegavo altrove, un sistema di gestione dei contenuti moderno e leggero che utilizza file semplici, cioè non richiede un database per funzionare. Lo uso perché è molto più veloce, semplice e flessibile rispetto a WordPress e altri CMS. Per la costruzione delle pagine Grav usa template scritti in Twig.

Twig è un motore di templating per PHP. Separa la logica di presentazione dal codice applicativo, rendendo il codice più pulito e facile da mantenere. Twig usa una sintassi concisa e leggibile, è facile da imparare e ben documentato.

Inizialmente ho chiesto a Copilot (tanto per cambiare) di creare un template apposta per l'archivio, ma dopo qualche tentativo infruttuoso ho pensato che potevo usare una pagina di default e scrivere il codice Twig direttamente in quella pagina.

Non è molto ortodosso, ma mi dà il vantaggio di lavorare con un solo file, anziché con vari file sul server. Lo svantaggio è che non posso riciclare il contenuto se volessi creare più pagine di archivio sul sito. Ma dato che me ne basta una, va bene così.

Oltretutto nella mia installazione di Grav CMS ho già un plugin con tutta la logica per creare pagine riassuntive per data, il plugin chiamato, con poca fantasia, "Archive".

Quindi, anziché riscrivere la logica da zero, ho chiesto a Copilot di scrivere qualche riga di codice per generare i link per ogni mese dell'anno, dalla fine del 2016, quando iniziai a pubblicare qui sopra, fino al mese in corso.

Poi gli ho chiesto anche di aggiungere un altro elenco, ma raggruppato per tag.

Per qualche motivo che mi sfugge, si ostinava a considerare l'anno lungo 13 mesi... e ad aggiungere l'anno successivo a quello in corso. Modificando a mano i punti del codice corrispondenti a questi due errori e con l'aiuto di un amico (grazie, Óscar) sono riuscito a risolvere.

Un ultimo inghippo era questo: pur visualizzando fra parentesi il numero corretto di post per ogni tag, una volta cliccata l'intestazione con il nome del tag «newsletter», venivano visualizzati soltanto 35 post, anziché gli oltre 100. Dopo aver indagato ogni possibile variabile della configurazione, un cortese utente del gruppo di discussione di Grav mi ha fatto notare che gli articoli in realtà erano lì (bastava guardare il codice HTML della pagina), ma una regola CSS che controlla l'elemento «accordion» (quello per cui si possono aprire e chiudere i gruppi di tag) limitava lo spazio a disposizione, nascondendo i titoli oltre un certo numero. È bastato cambiare la regola CSS e, voilà, sono comparsi tutti i titoli.

Il risultato è qui: archivio dei post

Non è proprio uguale alla pagina di Kottke, ma risponde precisamente a quello che avevo in mente.

Previous Post Next Post