Ir al contenido

Motor de Plantillas

Renderizado de plantillas usando CloudyKit Jet.

TipoDescripción
template.setConjunto de plantillas con configuración compartida
template.jetPlantilla individual

Un conjunto es un namespace que contiene plantillas relacionadas. Las plantillas dentro de un conjunto comparten configuración y pueden referenciarse entre sí por nombre.

- name: views
kind: template.set

Toda la configuración es opcional con valores por defecto sensatos:

CampoTipoPor DefectoDescripción
engine.development_modeboolfalseDeshabilitar caché de plantillas
engine.delimiters.leftstring{{Delimitador de apertura de variable
engine.delimiters.rightstring}}Delimitador de cierre de variable
engine.globalsmap-Variables disponibles para todas las plantillas

Las plantillas pertenecen a un conjunto y se identifican por nombre para resolución interna.

- name: layout
kind: template.jet
set: app.views:views
source: |
<html>
<body>{{ yield content() }}</body>
</html>
- name: home
kind: template.jet
set: app.views:views
source: |
{{ extends "layout" }}
{{ block content() }}
<h1>Bienvenido, {{ name }}</h1>
{{ end }}
CampoTipoRequeridoDescripción
setreferenciaConjunto de plantillas padre
sourcestringContenido de la plantilla

Las plantillas se referencian entre sí usando nombres, no IDs de registro. La resolución funciona como un sistema de archivos virtual dentro del conjunto:

  1. Por defecto, el nombre de entrada del registro (entry.ID.Name) se convierte en el nombre de plantilla
  2. Sobrescriba con meta.name para nomenclatura personalizada:
- name: email-welcome-v2
kind: template.jet
set: app.emails:templates
meta:
name: welcome
source: |
{{ include "header" }}
Hola {{ user }}!

Esta plantilla se registra como welcome en el conjunto, así que otras plantillas usan {{ include "welcome" }} o {{ extends "welcome" }}.

Las plantillas pueden extender plantillas padre y sobrescribir bloques:

# Padre define puntos de yield
- name: base
kind: template.jet
set: app.views:views
source: |
<html>
<head><title>{{ yield title() }}</title></head>
<body>{{ yield body() }}</body>
</html>
# Hijo extiende y llena bloques
- name: page
kind: template.jet
set: app.views:views
source: |
{{ extends "base" }}
{{ block title() }}Mi Página{{ end }}
{{ block body() }}<p>Contenido aquí</p>{{ end }}

Ver Módulo Template para operaciones de renderizado.