logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri

6.4. Twig è un nuovo motore di template per Drupal.

17/10/2025, by Ivan

Se apri il file del template page.html.twig del tema Stable:

/core/themes/stable/templates/layout/page.html.twig

Noterai che differisce dal template page.tpl.php di Drupal 7, innanzitutto per l’estensione e, in secondo luogo, per la grande quantità di parentesi graffe {}. Questo accade perché Drupal utilizza il motore di template Twig.

<main role="main">
    <a id="main-content" tabindex="-1"></a>{# il link si trova in html.html.twig #}
 
    <div class="layout-content">
      {{ page.content }}
    </div>{# /.layout-content #}
 
    {% if page.sidebar_first %}
      <aside class="layout-sidebar-first" role="complementary">
        {{ page.sidebar_first }}
      </aside>
    {% endif %}
 
    {% if page.sidebar_second %}
      <aside class="layout-sidebar-second" role="complementary">
        {{ page.sidebar_second }}
      </aside>
    {% endif %}
 
  </main>

Nel template Twig non è possibile usare PHP, quindi è necessario utilizzare solo gli strumenti forniti da Twig — che sono più che sufficienti per gestire lo stile del sito.

Vediamo come lavorare con Twig.

Variabili in Twig

Se in PHP utilizziamo il simbolo del dollaro $ per le variabili, in Twig usiamo le parentesi graffe:

{{ variable }}

Quindi, scriviamo le variabili con due parentesi graffe aperte, uno spazio, il nome della variabile, uno spazio e due parentesi chiuse. Per visualizzare una variabile, non è necessario aggiungere la funzione print; in Twig non si usa PHP: per stampare una variabile, basta racchiuderla tra doppie parentesi graffe.

È anche molto comodo lavorare con oggetti e array: se prima bisognava sapere che $node è un oggetto e $form è un array, ora è più semplice — ci riferiamo alle proprietà delle variabili tramite un punto:

{{ node.id }}

Possiamo creare facilmente nuove variabili:

{% set foo = "bar" %}
 
Ciao, questa è la mia variabile: {{ foo }}

Nota la sintassi: quando definiamo una variabile, utilizziamo parentesi con il simbolo percentuale {% %}; quando la mostriamo, utilizziamo le doppie parentesi {{ }}.

Possiamo specificare non solo stringhe, ma anche array:

{%
  set foo_array = [
    'foo',
    'bar',
  ]
%}

Filtri Twig

Sebbene Twig non sia un linguaggio di programmazione completo, dispone di un set di strumenti per lavorare con i dati. Uno degli strumenti più importanti sono i filtri. I filtri si applicano con il simbolo della barra verticale |:

{{ variable|filter }}

I filtri permettono di modificare l’output delle variabili, ad esempio:

{{ node.title | length }} – stampa la lunghezza della stringa

{{ node.title | upper }} – visualizza la stringa in maiuscolo

{{ node.title | lower }} – visualizza la stringa in minuscolo

Per l’elenco completo dei filtri Twig, consulta la documentazione ufficiale: http://twig.sensiolabs.org/doc/filters/index.html

Filtri Twig di Drupal

Drupal aggiunge anche propri filtri a Twig, ad esempio per la gestione delle interruzioni di riga. Se in precedenza utilizzavamo la funzione t() in PHP per la traduzione, ora che non possiamo usare codice PHP in Twig, ci serve uno strumento alternativo che la sostituisca.

Alcuni esempi di filtri Drupal Twig sono:

  • t
  • passthrough
  • placeholder
  • drupal_escape
  • safe_json
  • without
  • clean_class
  • clean_id

Traduzione di stringhe in Twig

Twig supporta la traduzione delle stringhe in diverse lingue. Per tradurre una stringa, bisogna utilizzare il tag {% trans %}. Nota come sono scritte le strutture di controllo: usano il simbolo di percentuale % per differenziarsi dalle variabili.

{% trans %} Ciao mondo {% endtrans %}

È anche possibile passare variabili all’interno delle stringhe da tradurre:

{% trans %} Ciao {{ name }} {% endtrans %}

Possiamo inoltre modificare le variabili con i filtri prima della traduzione:

{% set name = name|capitalize %}
 
{% trans %}
  Ciao {{ name }}!
{% endtrans %}

Commenti in Twig

{# Commento qui #}

Istruzione If

Anche se Twig non include tutte le funzionalità di PHP, fornisce un insieme di costrutti per lavorare con array e variabili. Ad esempio, possiamo verificare se una variabile esiste prima di mostrarla:

{% if site_slogan %}
  <div class="site-slogan">{{ site_slogan }}</div>
{% endif %}

Ciclo Twig

Spesso nei template è necessario scorrere un array e visualizzarne gli elementi uno per uno. In Twig utilizziamo il ciclo for (simile a foreach in PHP):

{% for item in items %}
  {{ item.content }}
{% endfor %}

Possiamo anche usare il ciclo for in modo simile a un normale ciclo PHP, ma con una sintassi diversa:

{% for i in range(0, 3) %}
  {{ i }},
{% endfor %}
Variabile Descrizione
items.index Numero dell’elemento corrente, a partire da 1
items.index0 Numero dell’elemento corrente, a partire da 0
items.revindex Numero dell’elemento corrente dal fondo, a partire da 1
items.revindex0 Numero dell’elemento corrente dal fondo, a partire da 0
items.first TRUE se questo è il primo elemento
items.last TRUE se questo è l’ultimo elemento
items.length Lunghezza dell’array
items.parent Contesto padre

Possiamo anche utilizzare la struttura for else:

<ul>
{% for user in users %}
  <li>{{ user.username|e }}</li>
{% else %}
  <li><em>nessun utente trovato</em></li>
{% endfor %}
</ul>