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
02/10/2025, by Ivan

Menu

Dalla documentazione ufficiale di Twig: «I macro sono paragonabili alle funzioni nei linguaggi di programmazione tradizionali. Sono utili per inserire idiomi HTML usati di frequente in elementi riutilizzabili, in modo da non doversi ripetere».

{% macro input(name, value, type, size) %}
  <input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />
{% endmacro %}

I macro si differenziano dalle funzioni native PHP in diversi modi:

  • I valori predefiniti degli argomenti vengono definiti usando il filtro default nel corpo del macro;
  • Gli argomenti dei macro sono sempre opzionali.
  • Se vengono passati argomenti posizionali aggiuntivi a un macro, essi vengono inseriti in una variabile speciale varargs come lista di valori.

Ma, come per le funzioni PHP, i macro non hanno accesso alle variabili correnti del template. Puoi passare l’intero contesto come argomento usando la variabile speciale _context.

Invocare un macro

Da _self

Un macro può essere inserito nello stesso file Twig da cui viene richiamato. In questo caso si usa il contesto _self ...

{{ _self.input(name, value, type, size) }}

Da un file esterno

È comunque consigliato posizionare i macro in un file separato (ad esempio macros.twig), così da poterli usare in più template.

Ad esempio, in un tema personalizzato «mytheme» possiamo posizionare il file del macro qui ...

[site_root]/themes/custom/mytheme/templates/macros.twig

Nota: il file del macro può avere qualsiasi nome con estensione .twig, ma non può avere estensione .html (quindi macros.html.twig non funzionerà). Inoltre, il file deve essere inserito nella cartella «templates», indipendentemente da dove venga usato (per esempio, per i layout di Layout Builder che posizioni in .../mytheme/layouts, il macro deve esistere in ../mytheme/templates).

Nel template in cui vuoi usare il macro, aggiungi questa istruzione di import:

{% import '@mytheme/macros.twig' as myMacros %}

@mytheme individua automaticamente la cartella «templates» del tuo tema, ma devi specificare manualmente eventuali sottocartelle nella dichiarazione di import, ad esempio:

{% import '@mytheme/foo/bar/macros.twig' as myMacros %}

Nota: nelle versioni più vecchie di questa documentazione si affermava che non era necessario specificare la struttura delle sottocartelle, quindi il comportamento può variare. Se lo fai in un modulo personalizzato, usa la stessa tecnica ma specifica il nome del modulo invece del nome del tema (per esempio, @mycustommodule).

Quindi puoi usare il macro ...

{{ myMacros.input(name, value, type, size) }}

Esempi

In Drupal 8 un macro viene utilizzato, ad esempio, per costruire la navigazione principale (vedi il file menu.html.twig).