Motor de Plantillas

Renderizado de plantillas usando CloudyKit Jet.

Tipos de Entrada

Tipo Descripción
template.set Conjunto de plantillas con configuración compartida
template.jet Plantilla individual

Conjuntos de Plantillas

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:

Campo Tipo Por Defecto Descripción
engine.development_mode bool false Deshabilitar caché de plantillas
engine.delimiters.left string {{ Delimitador de apertura de variable
engine.delimiters.right string }} Delimitador de cierre de variable
engine.globals map - Variables disponibles para todas las plantillas

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 }}    
Campo Tipo Requerido Descripción
set referencia Conjunto de plantillas padre
source string Contenido de la plantilla

Resolución de Plantillas

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" }}.

Herencia

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 }}    

API Lua

Ver Módulo Template para operaciones de renderizado.