Open2b versione 7.5

Render

L'operatore render usato tra {{ e }} :

{{ render percorso }}
renderizza il file con il percorso indicato e ne mostra il contenuto. Un file renderizzato con render 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":

{{ render "/partials/promotion.html" }}

Il percorso del file partial può essere anche relativo al file in cui si trova render:

{{ render "../header.html" }}

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

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

Per i dettagli si vedano le macro.

Uso più generale

Render è un operatore di Scriggo e come tale può essere usato nelle espressioni, non solo tra {{ e }}, come qualsiasi altro operatore. La sua valutazione ritorna una stringa. Ad esempio è possibile assegnare la sua valutazione ad una variabile per una successiva elaborazione:

{% var email = render "email.html" %}

ed usarlo come parte di un'altra espressione:

{%%
    if discount {
        show "Offer: " + render "offer.html"
    }
%%}

Consentire file non esistenti

Se il file da renderizzare non esiste, si verifica un errore di compilazione e il file del template non viene eseguito o il template non viene applicato al sito. Se invece si vuole gestire il caso in cui il file non esiste, senza che si verifichi un errore, si può usare una forma speciale di assegnamento con l'operatore render:

{% var promo, ok = render "extra.html" %}

In questo esempio, se il file "extra.html" esiste, la variabile promo conterrà il suo contenuto renderizzato e la variable ok sarà true. Se il file "extra.html" non esiste, la variabile promo sarà una stringa vuota e la variabile ok sarà false.

Pertanto se si desidera renderizzare e mostrare un file partial solo se esiste, senza che si verifichi un errore se non esiste, si può scrivere:

{% if promo, ok := render "extra.html"; ok %}{{ promo }}{% end if %}