Show e macro

Le istruzioni show e macro, assieme a extends ed import, consentono di strutturare il template in modo da scrivere una volta sola del codice per poi richiamarlo in diverse parti del template.

show

L'istruzione show, seguita dal percorso di un file, esegue il file e ne mostra il contenuto. Un file mostrato con show viene chiamato "partial" proprio perché contiene solo una parte di una pagina. In genere, per convenzione, i file partial stanno tutti in una cartella del template chiamata "partials":

{% show "/partials/promotion.html" %}

Il percorso del file partial può essere anche relativo al file in cui si trova l'istruzione show:

{% show "../header.html" %}

Quando un file partial viene mostrato, il codice del file non vede le variabili dichiarate nel file in cui si trova l'istruzione show come non vede tutte le eventuali altre dichiarazioni in questo file. A questo scopo si usano invece le macro con parametri, come ad esempio:

{% show Image("picture.jpg", 400, 500) %}

Per i dettagli si vedano le macro.

macro

Una macro è una parte di codice a cui viene dato un nome per poterla poi richiamare in un'altra parte del template. Per dichiarare una macro si usa l'istruzione macro. Ad esempio la seguente istruzione:

{% macro title %}Un bellissimo libro{% end %}

definisce una macro chiamata title che può essere chiamata e mostrata con l'istruzione show:

{% show title %}
Un bellissimo libro

Nel codice della macro è possibile accedere, oltre che alle variabili globali, anche alle variabili e macro dichiarate nello stesso file prima della dichiarazione della macro. Ad esempio:

{% var prodotto = "tablet" %}
{% macro title %}Un bellissimo {{ prodotto }}{% end %}
{% show title %}
Un bellissimo tablet

Una variabile dichiarata invece all'interno di una macro non è visibile fuori dalla macro stessa.

Macro con parametri

Una macro può avere dei parametri, come una funzione. Questi sono dichiarati tra parentesi tonde ( e ), separati da una virgola , e oltre al nome del parametro ne deve essere indicato il tipo.

La seguente istruzione dichiara una macro, chiamata image, con tre parametri.

{% macro image(url string, width int, height int) %}
  <img src="{{ url }}" width="{{ width }}" height="{{ height }}">
{% end %}

Una macro deve essere chiamata con lo stesso numero di argomenti, nello stesso ordine e dello stesso tipo dei parametri indicati nella sua dichiarazione.

{% show image("picture.jpg", 400, 500) %}
<img src="picture.jpg" width="400" height="500">

Un tipo può essere omesso se il parametro successivo ha lo stesso tipo. La precedente dichiarazione può essere quindi riscritta in questo modo:

{% macro image(url string, width, height int) %}
  <img src="{{ url }}" width="{{ width }}" height="{{ height }}">
{% end %}

La sintassi degli argomenti di una macro è lo stesso delle funzioni di Go con l'unica differenza che le macro non hanno parametri di ritorno.

Chiamare una macro dichiarata in un altro file

Per chiamare una macro dichiarata in un altro file, come ad esempio un file che dichiara macro utili in varie parti del template, bisogna prima importarne il file con l'istruzione import.

{% import "/imports/images.html" %}

{% show Image("offer.png", 200, 200) %}
<img src="offer.png" width="200" height="200">

Le macro dichiarate in altri file devono avere la prima lettera del nome in maiuscolo perché possano essere importate.

Quanto ti è stata utile questa pagina?

Grazie per averci aiutato a migliorare questa pagina