Come approcciare il layer di theming in Drupal 8 (e non solo) utilizzando strumenti grazie ai quali possiamo ottenere tempi di sviluppo più breve.
Relatore: Evan Butera
Con la versione 7 di Drupal è stato introdotto il concetto di Entity.
Verranno mostrate le potenzialità nell'uso delle Entity custom e le integrazioni possibili.
Relatore: Marco Vito Moscaritolo
[drupalday2017] - DevOps: strumenti di automazione per Drupal8DrupalDay
Spesso durante lo sviluppo e la manutenzione di un progetto siamo costretti a svolgere attività ripetitive o noiose (dall’esecuzione di un task alla replicazione e aggiornamento del sistema). Per risolvere alcuni di questi problemi proveremo ad usare Zaratan, un comodo strumento basato su Docker per installare tutte le componenti necessarie al funzionamento di Drupal, e Robo, un task runner scritto in PHP in grado di eseguire sia comandi Drush che azioni sul filesystem, sul database, ecc...
di Luca Cracco
Lo sviluppo del modulo Devel affonda le sue radici nel lontano 2003 quando la versione di Drupal era la 4.1. Ne è passata di acqua sotto i ponti e siamo in direttura di arrivo per la prima versione stabile di Devel per Drupal 8. Molte cose sono cambiate sia a livello di architettura che di funzionalità messe a disposizione degli sviluppatori. Integrazione con il Core - integrazione nativa con il modulo Toolbar del Core - pagine di informazione sul Service Container, le rotte, le entità, gli eventi e molto altro - cambio rapido di utente - accesso in lettura e modifica dei dati memorizzati nel Configuration Management System e nelle State API - estensioni di Twig per il dump delle variabili o l'impostazione di breakpoint per xDebug Dumpers Un sistema a plugin per stampare in pagina variabili complesse come array ed oggetti. Kint, Symfony var-dumper, Doctrine, sono tutti supportati e presenti di default in Devel. Webprofiler Profila e analizza ogni singola pagina del sito. Dalla toolbar che Webprofiler aggiunge al footer di ogni pagina hai una visione sull'utilizzo delle risorse, sulle query al database, sulle viste, sui blocchi e molto altro.
di Luca Lusso
Indaghiamo quali sono gli elementi di un processo produttivo di un progetto Drupal che devono essere condivisi con il suo Stakeholder per una strategia win-win.
di Claudia Astazi
[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.DrupalDay
Il talk sarà incentrato sul tema dell’accessibilità web. Sarà introdotta la tematica sia dal punto di vista generale (cos’è l’accessibilità, quali sono le leggi nazionali in materia), che delle metodologie utilizzate per la verifica dell’accessibilità (le WCAG, gli esperti ed i gruppi di valutazione), che degli strumenti a supporto dello sviluppo di siti accessibili (validatori e contrast checker), con una dimostrazione del loro funzionamento. Infine si discuterà dell’accessibilità in Drupal.
di Antonio Giovanni Schiavone
[drupalday2017] - Behat per Drupal: test automatici e molto di piùDrupalDay
Behat è nato per semplificare il processo di accettazione da parte del cliente: per evitare ambiguità si realizza un test automatico (leggibile anche da chi non ha competenze tecniche) la cui esecuzione con successo garantisce che le specifiche siano rispettate. L'integrazione di Behat nel processo di sviluppo Drupal permette tuttavia di andare ben oltre: si può usare Behat per condividere le specifiche con il cliente, per guidare lo sviluppo (scrivendo il test prima del codice), per assistere il debug (usando uno scenario per popolare una situazione di errore ripetibile) e persino per migrare un sito da Drupal 7 a Drupal 8 (codificando il comportamento del sito in una serie di test che vengono poi usati come base per lo sviluppo del nuovo sito). Per tutti gli scenari descritti vedremo esempi basati sull'esperienza di Nuvole.
di Andrea Pescetti
[drupalday2017] - DevOps: strumenti di automazione per Drupal8DrupalDay
Spesso durante lo sviluppo e la manutenzione di un progetto siamo costretti a svolgere attività ripetitive o noiose (dall’esecuzione di un task alla replicazione e aggiornamento del sistema). Per risolvere alcuni di questi problemi proveremo ad usare Zaratan, un comodo strumento basato su Docker per installare tutte le componenti necessarie al funzionamento di Drupal, e Robo, un task runner scritto in PHP in grado di eseguire sia comandi Drush che azioni sul filesystem, sul database, ecc...
di Marco Capobussi
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a timeDrupalDay
Innovation & Open source are almost always related, but start, sustain and position an open source project is not a easy task. Using Drupal Console as an example, would be presented the challenges and rewards or creating and maintaining an Open Source project. Talk in lingua inglese.
di Eduardo Garcia
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...DrupalDay
Gli Open Data rappresentano il motore per l’innovazione, la crescita e la governance. Recentemente la Commissione Europea, nell’ambito delle azioni dell’Agenda Digitale, ha presentato un programma di azioni per il riutilizzo delle informazioni del settore pubblico che dovrebbe dare un contributo consistente all’economia. Sulla base di queste importanti indicazioni Sapienza ha sviluppato dei modelli web realizzati con Drupal per valorizzare il patrimonio dei dati di Ateneo mediante l'esposizione e il riutilizzo. Il licensing e la tutela dei dati personali sono gli strumenti necessari per gli sviluppatori interessati alla costruzione di servizi innovativi per le PA.
di Andrea Dori
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di SapienzaDrupalDay
La Sapienza mette a disposizione dei cittadini, delle istituzioni, delle imprese e degli utenti in generale due piattaforme sviluppate in Drupal in ottemperanza ai DLgs 33/2013 (come modificato dal D.Lgs. 97/2016) e DLgs 190/2012 sulla trasparenza amministrativa. Il talk tratterà le soluzioni implementate in Drupal per soddisfare i requisiti normativi.
di Francesco Barcellona e Ramon Souviron
[drupalday2017] - Quando l’informazione è un servizioDrupalDay
Creare e mantenere contenuti online è un’attività complessa e costosa per ogni organizzazione, ma strategica: per la PA i contenuti online rappresentano un canale e un punto di contatto essenziale nei servizi per il cittadino. Quali sono i metodi e gli approcci che rendono questo investimento efficace? E come cambiano la funzione e la fisionomia del CMS, quando da strumento di pubblicazione e manutenzione diventa una piattaforma per gestire l’intero processo produttivo del contenuto?
di Francesca Marangoni
[drupalday2017] - Venezia & Drupal. Venezia è Drupal!DrupalDay
Il nuovo sito istituzionale del Comune di Venezia: linee guida per il design dei siti della Pubblica amministrazione, SPID, Carta Nazionale dei Servizi, certificati anagrafici on line, news wall, campagne e-mail e servizi di messaggistica. Con Drupal.
di Paolo Cotti Cometti e Francesco Trabacchin
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8DrupalDay
Ho sentito spesso dire: “non utilizziamo D8 perché non ha ancora i moduli che ci servono per il progetto.”. OK, allora iniziamo a convertirli! Presenterò la mia esperienza nel convertire il modulo Iubenda Integration da D7 a D8, cercando di mettere in luce le principali difficoltà incontrate. Con questa sessione la mia speranza è di fornire le basi per convertire i propri moduli da a chi sviluppa progetti in Drupal 8.
di Roberto Peruzzo
Cosa Drupal 8 ha da offrire rispetto ad altri framework PHP quando si parla di esporre un servizio REST? Partendo dalle dieci regole per creare una API che i vostri client ameranno, vedremo quali strumenti brillano nel firmamento di PHP all'alba del 2017 e metteremo alcuni di essi a confronto con Drupal 8, la versione più PHP-friendly del nostro CMS preferito. Pezzo per pezzo, costruiremo una mappa che metta in relazione gli strumenti ai casi d'uso cui sono più adatti e che ci permetterà di decidere con più confidenza cosa usare per il nostro prossimo service layer.
di Paolo Pustorino
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al themingDrupalDay
Mano a mano che i siti diventano sempre più complessi ed articolati emergono nuovi metodi di progettazione che cercano di gestire questa complessità. Uno dei metodi più popolari è l'Atomic Design che ha nei seguenti elementi i mattoni fornamentali con cui progettare il sito: Atomi, Molecole, Organismi, Templates, Pagine. Questa tecnica è supportata da uno strumento: PatternLab. C'è molta attività attorno all'uso di questo strumento in Drupal, in questo talk vedremo a che punto è l'integrazione.
di Gian Mario Mereu
[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...DrupalDay
La razionalizzazione delle infrastrutture tecnologiche della PA centrale e locale non è solo l’occasione per ottimizzare la spesa ICT, ma anche una opportunità per migliorare i servizi alle imprese ed ai cittadini attraverso la condivisione delle piattaforme tecnologiche innovative. Questa evoluzione richiederà necessariamente delle considerazioni inerenti la proprietà intellettuale nell'ambito dell'open source e dei big data.
di Claudia Pavoletti e Michele Melchionda
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client ManagerDrupalDay
Proviamo a gettare un nuovo standard per la gestione delle sorgenti e per la presentazione di dati nelle istanze Drupal che consumano servizi. Perchè ne abbiamo bisogno e come i Guzzle Service Description possono salvarci la vita.
di Adriano Cori
Come portare il profiler di symfony2 in drupal8Luca Lusso
Molti progetti PHP open source hanno adottato Symfony2 come base per la loro prossima versione, tra questi c'è anche il CMS Drupal (http://drupal.org). In questo talk vedremo come scrivere un modulo per Drupal8 in modo da sfruttare il più possibile il suo nuovo motore Symfony2, dall'integrazione con il service container alla gestione degli eventi, dal routing a Twig. Verrà usato come esempio il modulo webprofiler (http://drupal.org/project/webprofiler) per dimostrare come un bundle per Symfony2 possa essere trasformato in un modulo per Drupal8 e integrato facilmente nel sistema.
Come approcciare il layer di theming in Drupal 8 (e non solo) utilizzando strumenti grazie ai quali possiamo ottenere tempi di sviluppo più breve.
Relatore: Evan Butera
Con la versione 7 di Drupal è stato introdotto il concetto di Entity.
Verranno mostrate le potenzialità nell'uso delle Entity custom e le integrazioni possibili.
Relatore: Marco Vito Moscaritolo
[drupalday2017] - DevOps: strumenti di automazione per Drupal8DrupalDay
Spesso durante lo sviluppo e la manutenzione di un progetto siamo costretti a svolgere attività ripetitive o noiose (dall’esecuzione di un task alla replicazione e aggiornamento del sistema). Per risolvere alcuni di questi problemi proveremo ad usare Zaratan, un comodo strumento basato su Docker per installare tutte le componenti necessarie al funzionamento di Drupal, e Robo, un task runner scritto in PHP in grado di eseguire sia comandi Drush che azioni sul filesystem, sul database, ecc...
di Luca Cracco
Lo sviluppo del modulo Devel affonda le sue radici nel lontano 2003 quando la versione di Drupal era la 4.1. Ne è passata di acqua sotto i ponti e siamo in direttura di arrivo per la prima versione stabile di Devel per Drupal 8. Molte cose sono cambiate sia a livello di architettura che di funzionalità messe a disposizione degli sviluppatori. Integrazione con il Core - integrazione nativa con il modulo Toolbar del Core - pagine di informazione sul Service Container, le rotte, le entità, gli eventi e molto altro - cambio rapido di utente - accesso in lettura e modifica dei dati memorizzati nel Configuration Management System e nelle State API - estensioni di Twig per il dump delle variabili o l'impostazione di breakpoint per xDebug Dumpers Un sistema a plugin per stampare in pagina variabili complesse come array ed oggetti. Kint, Symfony var-dumper, Doctrine, sono tutti supportati e presenti di default in Devel. Webprofiler Profila e analizza ogni singola pagina del sito. Dalla toolbar che Webprofiler aggiunge al footer di ogni pagina hai una visione sull'utilizzo delle risorse, sulle query al database, sulle viste, sui blocchi e molto altro.
di Luca Lusso
Indaghiamo quali sono gli elementi di un processo produttivo di un progetto Drupal che devono essere condivisi con il suo Stakeholder per una strategia win-win.
di Claudia Astazi
[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.DrupalDay
Il talk sarà incentrato sul tema dell’accessibilità web. Sarà introdotta la tematica sia dal punto di vista generale (cos’è l’accessibilità, quali sono le leggi nazionali in materia), che delle metodologie utilizzate per la verifica dell’accessibilità (le WCAG, gli esperti ed i gruppi di valutazione), che degli strumenti a supporto dello sviluppo di siti accessibili (validatori e contrast checker), con una dimostrazione del loro funzionamento. Infine si discuterà dell’accessibilità in Drupal.
di Antonio Giovanni Schiavone
[drupalday2017] - Behat per Drupal: test automatici e molto di piùDrupalDay
Behat è nato per semplificare il processo di accettazione da parte del cliente: per evitare ambiguità si realizza un test automatico (leggibile anche da chi non ha competenze tecniche) la cui esecuzione con successo garantisce che le specifiche siano rispettate. L'integrazione di Behat nel processo di sviluppo Drupal permette tuttavia di andare ben oltre: si può usare Behat per condividere le specifiche con il cliente, per guidare lo sviluppo (scrivendo il test prima del codice), per assistere il debug (usando uno scenario per popolare una situazione di errore ripetibile) e persino per migrare un sito da Drupal 7 a Drupal 8 (codificando il comportamento del sito in una serie di test che vengono poi usati come base per lo sviluppo del nuovo sito). Per tutti gli scenari descritti vedremo esempi basati sull'esperienza di Nuvole.
di Andrea Pescetti
[drupalday2017] - DevOps: strumenti di automazione per Drupal8DrupalDay
Spesso durante lo sviluppo e la manutenzione di un progetto siamo costretti a svolgere attività ripetitive o noiose (dall’esecuzione di un task alla replicazione e aggiornamento del sistema). Per risolvere alcuni di questi problemi proveremo ad usare Zaratan, un comodo strumento basato su Docker per installare tutte le componenti necessarie al funzionamento di Drupal, e Robo, un task runner scritto in PHP in grado di eseguire sia comandi Drush che azioni sul filesystem, sul database, ecc...
di Marco Capobussi
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a timeDrupalDay
Innovation & Open source are almost always related, but start, sustain and position an open source project is not a easy task. Using Drupal Console as an example, would be presented the challenges and rewards or creating and maintaining an Open Source project. Talk in lingua inglese.
di Eduardo Garcia
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...DrupalDay
Gli Open Data rappresentano il motore per l’innovazione, la crescita e la governance. Recentemente la Commissione Europea, nell’ambito delle azioni dell’Agenda Digitale, ha presentato un programma di azioni per il riutilizzo delle informazioni del settore pubblico che dovrebbe dare un contributo consistente all’economia. Sulla base di queste importanti indicazioni Sapienza ha sviluppato dei modelli web realizzati con Drupal per valorizzare il patrimonio dei dati di Ateneo mediante l'esposizione e il riutilizzo. Il licensing e la tutela dei dati personali sono gli strumenti necessari per gli sviluppatori interessati alla costruzione di servizi innovativi per le PA.
di Andrea Dori
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di SapienzaDrupalDay
La Sapienza mette a disposizione dei cittadini, delle istituzioni, delle imprese e degli utenti in generale due piattaforme sviluppate in Drupal in ottemperanza ai DLgs 33/2013 (come modificato dal D.Lgs. 97/2016) e DLgs 190/2012 sulla trasparenza amministrativa. Il talk tratterà le soluzioni implementate in Drupal per soddisfare i requisiti normativi.
di Francesco Barcellona e Ramon Souviron
[drupalday2017] - Quando l’informazione è un servizioDrupalDay
Creare e mantenere contenuti online è un’attività complessa e costosa per ogni organizzazione, ma strategica: per la PA i contenuti online rappresentano un canale e un punto di contatto essenziale nei servizi per il cittadino. Quali sono i metodi e gli approcci che rendono questo investimento efficace? E come cambiano la funzione e la fisionomia del CMS, quando da strumento di pubblicazione e manutenzione diventa una piattaforma per gestire l’intero processo produttivo del contenuto?
di Francesca Marangoni
[drupalday2017] - Venezia & Drupal. Venezia è Drupal!DrupalDay
Il nuovo sito istituzionale del Comune di Venezia: linee guida per il design dei siti della Pubblica amministrazione, SPID, Carta Nazionale dei Servizi, certificati anagrafici on line, news wall, campagne e-mail e servizi di messaggistica. Con Drupal.
di Paolo Cotti Cometti e Francesco Trabacchin
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8DrupalDay
Ho sentito spesso dire: “non utilizziamo D8 perché non ha ancora i moduli che ci servono per il progetto.”. OK, allora iniziamo a convertirli! Presenterò la mia esperienza nel convertire il modulo Iubenda Integration da D7 a D8, cercando di mettere in luce le principali difficoltà incontrate. Con questa sessione la mia speranza è di fornire le basi per convertire i propri moduli da a chi sviluppa progetti in Drupal 8.
di Roberto Peruzzo
Cosa Drupal 8 ha da offrire rispetto ad altri framework PHP quando si parla di esporre un servizio REST? Partendo dalle dieci regole per creare una API che i vostri client ameranno, vedremo quali strumenti brillano nel firmamento di PHP all'alba del 2017 e metteremo alcuni di essi a confronto con Drupal 8, la versione più PHP-friendly del nostro CMS preferito. Pezzo per pezzo, costruiremo una mappa che metta in relazione gli strumenti ai casi d'uso cui sono più adatti e che ci permetterà di decidere con più confidenza cosa usare per il nostro prossimo service layer.
di Paolo Pustorino
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al themingDrupalDay
Mano a mano che i siti diventano sempre più complessi ed articolati emergono nuovi metodi di progettazione che cercano di gestire questa complessità. Uno dei metodi più popolari è l'Atomic Design che ha nei seguenti elementi i mattoni fornamentali con cui progettare il sito: Atomi, Molecole, Organismi, Templates, Pagine. Questa tecnica è supportata da uno strumento: PatternLab. C'è molta attività attorno all'uso di questo strumento in Drupal, in questo talk vedremo a che punto è l'integrazione.
di Gian Mario Mereu
[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...DrupalDay
La razionalizzazione delle infrastrutture tecnologiche della PA centrale e locale non è solo l’occasione per ottimizzare la spesa ICT, ma anche una opportunità per migliorare i servizi alle imprese ed ai cittadini attraverso la condivisione delle piattaforme tecnologiche innovative. Questa evoluzione richiederà necessariamente delle considerazioni inerenti la proprietà intellettuale nell'ambito dell'open source e dei big data.
di Claudia Pavoletti e Michele Melchionda
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client ManagerDrupalDay
Proviamo a gettare un nuovo standard per la gestione delle sorgenti e per la presentazione di dati nelle istanze Drupal che consumano servizi. Perchè ne abbiamo bisogno e come i Guzzle Service Description possono salvarci la vita.
di Adriano Cori
Come portare il profiler di symfony2 in drupal8Luca Lusso
Molti progetti PHP open source hanno adottato Symfony2 come base per la loro prossima versione, tra questi c'è anche il CMS Drupal (http://drupal.org). In questo talk vedremo come scrivere un modulo per Drupal8 in modo da sfruttare il più possibile il suo nuovo motore Symfony2, dall'integrazione con il service container alla gestione degli eventi, dal routing a Twig. Verrà usato come esempio il modulo webprofiler (http://drupal.org/project/webprofiler) per dimostrare come un bundle per Symfony2 possa essere trasformato in un modulo per Drupal8 e integrato facilmente nel sistema.
[Gian Mario Mereu] - Drupal & Patternlab: un nuovo approccio al themingWellnet srl
Mano a mano che i siti diventano sempre più complessi ed articolati emergono nuovi metodi di progettazione che cercano di gestire questa complessità. Uno dei metodi più popolari è l'Atomic Design che ha nei seguenti elementi i mattoni fornamentali con cui progettare il sito: Atomi, Molecole, Organismi, Templates, Pagine. Questa tecnica è supportata da uno strumento: PatternLab. C'è molta attività attorno all'uso di questo strumento in Drupal, in questo talk vedremo a che punto è l'integrazione.
Drupal 8 - dal download del core alla pubblicazione in produzionesparkfabrik
Inizializzare una nuova installazione Drupal è una procedura un po' più tricky rispetto al passato. Cos'è cambiato? Cos'è il Configuration Management e come dovremo scrivere le nostre Feature? Di cosa dobbiamo tenere conto nello scrivere i nostri moduli? Una volta risposto a queste domande c'è da portare tutto in stage e successivamente in produzione in maniera sicura ed indolore magari automatizzando il tutto, se possibile.
Slide prediposte per un corso di livello intermedio sul CMS Drupal. Nel corso delle slide si affronta una prima parte di presentazione delle caratteristiche di Drupal per poi procedere verso un approfondimento relativo ad alcuni dei suoi plugin principali con una particolare attenzione al theming, anche avanzato.
Speaker: Luca Lusso
Area: Development
Probabilmente Drupal8 sarà la versione più performante di Drupal mai realizzata (o almeno questo è l'obiettivo). In questo talk vedremo alcune delle tecniche che sono state messe in campo per raggiungere questo risultato e vedremo come sfruttarle dentro ad un modulo custom.
Topic: Templating in Symfony
Language: italian (english version soon)
First of three presentations shown during the first edition of the Train to Symfony
Verona 13/14 April 2013
http://traintosymfony.com
http://twitter.com/TrainToSymfony
Emanuele Gaspari
https://twitter.com/inmarelibero
Django: utilizzo avanzato e nuove funzionalitàskam
Django è uno dei framework web più apprezzati e utilizzati dalla comunità Python (e non solo).
I suoi punti di forza sono rappresentati dal suo utilizzo rapido e intuitivo, l'ottima documentazione e una larga comunità di sviluppatori ed utilizzatori.
A più di un anno di distanza dal rilascio della versione 0.96 le feature e i miglioramenti introdotti sono stati molti.
La presentazione mostra alcune di queste novità e l'utilizzo avanzato di alcuni componenti del framework.
Una breve introduzione alla creazione di report/libri basati su Latex.
Verrranno presentati i comandi principali, e la struttura base di un documento Latex.
A fine 2015 è stato lanciato lo sviluppo della nuova major release di TYPO3 CMS. A marzo 2016 il rilascio della prima sprint release. In questo documento si trovano tutte le novità di TYPO3 CMS 8.0
6. PHPTemplate
3.1
IL THEME ENGINE SU
DRUPAL 7
IL THEME ENGINE DI DRUPAL 7
Utilizza file di template individuali, con
estensione .tpl.php, per presentare le
funzioni theme_ di Drupal, come ad
esempio theme_pager().
7. All’interno dei template era possibile
qualsiasi cosa, persino effettuare
operazioni sul database.
PHPTemplate
3.1
IL THEME ENGINE SU
DRUPAL 7
GLI SVANTAGGI
<?php db_query(“DROP TABLE {node}”); ?>
Sicurezza
8. String? Object? Array?
PHPTemplate
3.1
IL THEME ENGINE SU
DRUPAL 7
GLI SVANTAGGI
<?php print $node->nid; ?> //object
Accesso alle variabili
<?php print $attributes; ?> //string
<?php print render($content); ?> //array
Troppi modi per accedere una variabile.
9. PHPTemplate
3.1
IL THEME ENGINE SU
DRUPAL 7
GLI SVANTAGGI
Complessità
File di template, tante funzioni theme() e
un theme layer molto complicato.
Uno schema semplificato del
theme layer, realizzato da John
Albin
10. Ilcambiamento:Twig
3.2
IL NUOVO
THEME ENGINE:
TWIG
IL THEME ENGINE DI DRUPAL 8
E’ un linguaggio di templating basato su
PHP, è parte del framework Symfony 2.
Tutte le funzioni theme_* e i file
PHPTemplate sono stati rimossi e
sostituiti con template Twig *.html.twig.
13. Twig
3.3
IL NUOVO
THEME ENGINE:
TWIG
VANTAGGI
Twig ci mostra messaggi di aiuto sugli
errori. E’ possibile abilitare la funzione di
debug che velocizza e facilita il lavoro su
Drupal.
Debug più semplice e veloce
16. Lebasiela sintassi
3.5
IL NUOVO
THEME ENGINE:
TWIG
COMMENTARE su riga singola o multipla
{# … #}
{{ … }}
STAMPARE una variabile o risultato
{% … %}
CONTROLLARE la logica del template
17. Lebasiela sintassi
3.5
IL NUOVO
THEME ENGINE:
TWIG
FILTRI modificano variabili nei template Twig
{{ title|upper }}
I filtri sono separati dalla variabile da un
pipe | e possono avere argomenti nelle
parentesi.
18. Lebasiela sintassi
3.5
IL NUOVO
THEME ENGINE:
TWIG
STRUTTURE DI CONTROLLO per controllare il
flusso dei template (es. if, for, …)
{% if user|length > 0 %}
{% for user in users %}
{{ user.username|e }}
{% endfor %}
{% endif %}
20. Lebasiela sintassi
3.5
IL NUOVO
THEME ENGINE:
TWIG
EREDITARIETÀ DEI TEMPLATE permette di
creare template base, contenenti gli elementi in
comune e definire block che i template figli
possono sovrascrivere.
Probabilmente la potenzialità maggiore di Twig.
{% extends "base.html" %}
21. Ladirectory/themes
4IL THEMING SU
DRUPAL 8
UN ALTRO CAMBIAMENTO
I temi custom e contrib ora risiedono
nella cartella /themes.
E’ una buona pratica separare i temi in
due cartelle:
• themes/contrib
• themes/custom
22. Lastruttura deitemi
4.1
IL THEMING SU
DRUPAL 8
PIÙ STRUTTURA, PIÙ METODO
1. *.info.yml
2. *.libraries.yml
3. *.breakpoints.yml
4. *.theme
24. Base themes
4.3
IL THEMING SU
DRUPAL 8
<div class=“node node—article …”>
{{ foo }}
</div>
CLASSY
STABLE
Per iniziare con markup e classi sensibili.
<div>{{ foo }}</div>
Per iniziare con markup più snello e
meno classi.
25. Lelibrerie
4.4
IL THEMING SU
DRUPAL 8
I VANTAGGI DELLE LIBRERIE
• Dipendenze
• Categorizzazione
• CSS e JS associati in unità logiche
• Caricamento delle librerie dove
necessarie
26. Lelibrerie
4.4
IL THEMING SU
DRUPAL 8
{{ attach_library('theme/library') }}
INSERIRE LIBRERIE DA TEMPLATE
INSERIRE LIBRERIE SU PAGINE SPECIFICHE
<?php
function theme_preprocess_maintenance_page(&$variables) {
$variables['#attached']['library'][] = 'theme/library';
}
?>
E’ possibile farlo implementando la
funzione THEME_preprocess_HOOK()
28. Ildebug
4.5
IL THEMING SU
DRUPAL 8
FINALMENTE CHIAREZZA E VELOCITÀ
• Abilitare il debug sites/default/
services.yml
Sta stampando il
markup
Possono andare in
override in maniera
specifica
29. Twigin Drupal
4.6
IL THEMING SU
DRUPAL 8
ACCESSO ALLE VARIABILI
Per stampare una variabile
{{ content }}
Con un punto (.) possiamo accedere
agli attributi di una variabile
{{ page.sidebar_first }}
{{ content.field_image }}
30. Twigin Drupal
4.7
IL THEMING SU
DRUPAL 8
CLASSI, PREPROCESS, ATTRIBUTES
Le funzioni preprocess non saranno più
utilizzate per aggiungere classi; questo
lavoro viene effettuato all’interno dei file
template Twig.
Questo ci permette di avere un grande
controllo sulle classi, senza l’uso di
funzioni preprocess o logica complessa.
32. Twigin Drupal
4.7
IL THEMING SU
DRUPAL 8
CLASSI, PREPROCESS, ATTRIBUTES
L’oggetto attributes ha il compito di
contenere set di attributi ed espone
metodi per interagire con queste
informazioni:
attributes.addClass()
attributes.removeClass()
attributes.setAttribute($attribute, $value)
attributes.removeAttribute($attribute, $value)
attributes.hasClass($class)
33. Twigin Drupal
4.7
IL THEMING SU
DRUPAL 8
CLASSI, PREPROCESS, ATTRIBUTES
I metodi degli attributi sono
concatenabili:
{# classes = [ 'red', 'green', 'blue' ] #}
<div{{ attributes.addClass(classes).removeClass('green') }}></div>
<div class="red blue"></div>
Produrrà:
34. Twigin Drupal
4.8
IL THEMING SU
DRUPAL 8
FILTRI
Il filtro without permette di escludere dal
rendering i field che non vogliamo
mostrare, o mostrare successivamente.
<div {{ content_attributes }}>
{{ content|without(‘field_image’,’field_link’) }}
</div>
35. Twigin Drupal
4.8
IL THEMING SU
DRUPAL 8
FILTRI
Il filtro clean_class prepara una stringa
all’uso come classe HTML valida.
{%
set classes = [
'field--name-' ~ field_name|clean_class,
'field--type-' ~ field_type|clean_class
]
%}
36. Twigin Drupal
4.9
IL THEMING SU
DRUPAL 8
EREDITARIETÀ
Non è necessario duplicare
completamente un template per poter
andare in override.
Possiamo definire dei block (non quelli di
Drupal!) che ci permettono di controllare
il markup in determinate situazioni,
estendendo il template di base.
37. field.html.twig
{% block contents %}
{% endblock %}
Definisce la parte che può essere
sovrascritta.
field—node—field-link--article.html.twig
{% block contents %}
{% endblock %}
Andiamo in override sulla parte
interessata.
{% extends ‘path/to/file’ %}
Estendiamo il file di base.