Template Engine



Informationen effizient organisieren.
Mit der Dr.DOC Komplettlösung für revisionssichere Archivierung.



  Anfragen Demo anfordern
Mehr über Dr.DOC erfahren




Web Node Template Engine

Templates sind Dateien mit der Endung ".html".
Diese werden aus dem Verzeichnis geladen, welches in der Konfiguration angegeben ist: Datei "server.ini", Section "WEB_NODE", Wert "TEMPLATE_DIR".

Die Templates enthalten HTML und C# Code (im ff. "Code" genannt). Der Code wird auf Server Seite ausgeführt.
Code wird nur ausgeführt wenn er in Expressions oder Node-Attributen enthalten ist. Andernfalls wird nur das HTML geladen.

Das Template-Verzeichnis ist zu schützen, da Templates ausführbaren Code enthalten (können).
Alle Templates werden vom Typen "TemplateHtmlWebNode" abgeleitet.


Dateinamen Formate:

Die HTML Templates können folgende Formate haben:

  • Node-Namen[@Context-View-Mode][#Username].html
  • Node-Pfad[@Context-View-Mode][#Username].html
  • Node-Class-Type[@Context-View-Mode][#Username].html
  • Node-Basis-Class-Type[@Context-View-Mode][#Username].html
  • Node-Prototype[@Context-View-Mode][#Username].html

Context-View-Mode und Username sind optional.

Bei Qualifizierten Namen wird "--" als Trenner für Eigenschaften verwendet.
Folgende Zeichen werden umgewandelt:

QuellzeichenQuellzeichen-NameZeichen im DateinamenName
/Slash__Zwei Unterstriche
\Backslash__Zwei Unterstriche
|Pipe--Zwei Bindestriche
<Kleiner als[Eckige Klammer auf
>Größer als]Eckige Klammer zu


Node-Name kann sein:

  • Pfad eines PageWebNode
  • Name einer Eigenschaft

Node-Pfad kann sein:

  • de__home--home


Context-View-Mode wird im GET Paramter als "view" übergeben und kann sein:

  • None (Default)
  • Inline
  • Control
  • Print


Dateinamen Lade-Reihenfolge:

  1. Voller qualifizierter Name
  2. z.B. "de__home--body@None.html"


Espressions:

Eine Expression wird auf dem Server ausgeführt.

Compilierbare Expression

Eine Compilierbare Expression enthält C# Code.

  • Lange-Form: "{{ return 'Hallo Welt!'; }}"
  • identische Kurzform: "{{$'Hallo Welt!'}}

Innerhalb einer Compilierbaren Expression sind folgende Variablen aufrufbar:

  • Node-Context "context", z.B. zum Laden der User-Session
  • Aktueller Web Node "_this"
  • Alle Properties des aktuellen Web Nodes und die des Prototypes (rekursiv)
  • Context-Variablen: z.B. aus Node-Attributen (node-foreach, node-for)


Verweisbare Expressions

Verweisbare Expressions (werden nur gerendert nicht compiliert) haben die Form: "{{var}}"
Folgende Expressions sind verweisbar:

  • Properties eines Web-Nodes
  • Context-Variablen: z.B. aus Node-Attributen (node-foreach, node-for)


Node-Attribute für TemplateHtmlWebNode:

Wenn die Attribute den Tag-Name "node" haben, wird nur das innere HTML zurückgegeben (gilt nicht für "node-if").
z.B. {{array}}

Falls ein Node-Attribute eine ausführbare Code Expession ist, wird diese als "{{ retrun ;.}}" behandelt;
es muss kein "{{ ..}}" und kein "return value;" angegeben werden.

  • node-foreach
    Format: "[Type] [Item Name der Context Variable] in [Expression der Liste]"
    Statt einem festen Typen "Type" können Sie auch "var" angeben.
    Beispiel 1: "string itm in string1.Split('/')"
    Beispiel 2: "var sub_page in _this.GetChildPages(context, false)"
  • node-for
    • node-for-key: Name der Context-Variable für den Index/Schlüssel
    • node-for-array
    • node-for-array-name
  • node-for
    • node-for-key: Name der Context-Variable für den Index
    • node-for-from: Code Expression (ohne "return") für den Start-Index
    • node-for-to: Code Expression (ohne "return") für den End-Index
  • node-if
    • node-if: Code Expression 
    • node-else-if: Code Expression 
    • node-else: Code Expression