Zum Inhalt springen

Template-Engine

Template-Rendering mit CloudyKit Jet.

KindBeschreibung
template.setTemplate-Set mit gemeinsamer Konfiguration
template.jetEinzelnes Template

Ein Set ist ein Namespace der verwandte Templates enthält. Templates innerhalb eines Sets teilen sich die Konfiguration und können sich gegenseitig über den Namen referenzieren.

- name: views
kind: template.set

Alle Konfiguration ist optional mit sinnvollen Standardwerten:

FeldTypStandardBeschreibung
engine.development_modeboolfalseTemplate-Caching deaktivieren
engine.delimiters.leftstring{{Variablen-Öffnungstrennzeichen
engine.delimiters.rightstring}}Variablen-Schließtrennzeichen
engine.globalsmap-Variablen verfügbar für alle Templates

Templates gehören zu einem Set und werden für interne Auflösung über den Namen identifiziert.

- 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>Willkommen, {{ name }}</h1>
{{ end }}
FeldTypErforderlichBeschreibung
setreferenceJaÜbergeordnetes Template-Set
sourcestringJaTemplate-Inhalt

Templates referenzieren sich gegenseitig über Namen, nicht Registry-IDs. Die Auflösung funktioniert wie ein virtuelles Dateisystem innerhalb des Sets:

  1. Standardmäßig wird der Registry-Entry-Name (entry.ID.Name) zum Template-Namen
  2. Mit meta.name für benutzerdefinierte Benennung überschreiben:
- name: email-welcome-v2
kind: template.jet
set: app.emails:templates
meta:
name: welcome
source: |
{{ include "header" }}
Hallo {{ user }}!

Dieses Template wird als welcome im Set registriert, also verwenden andere Templates {{ include "welcome" }} oder {{ extends "welcome" }}.

Templates können Eltern-Templates erweitern und Blöcke überschreiben:

# Eltern definiert yield-Punkte
- name: base
kind: template.jet
set: app.views:views
source: |
<html>
<head><title>{{ yield title() }}</title></head>
<body>{{ yield body() }}</body>
</html>
# Kind erweitert und füllt Blöcke
- name: page
kind: template.jet
set: app.views:views
source: |
{{ extends "base" }}
{{ block title() }}Meine Seite{{ end }}
{{ block body() }}<p>Inhalt hier</p>{{ end }}

Siehe Template-Modul für Rendering-Operationen.