Variablen mit Stacey einsetzen
Übersicht
Im Templatesystem von Stacey gibt es drei Variablentypen:
- @Variablen
- werden durch die .txt-Datei der jeweiligen Seite bereitgestellt und durch das Stacey System ergänzt (z.B. @page_name).
- $Kollektionen/
Sammlungen/
Zusammenstellungen - Sammlung von Assets oder Seiten, die mit einer Schleife durchlaufen werden kann (z.B. $children).
- :Partials
- Kurzschreibweise um Dateien aus dem Verzeichnis /templates/partials einzufügen (z.B. :navigation).
@Variables
Innerhalb der Template-Dateien stehen neben den HTML-Tags auch die innerhalb der entsprechenden .txt-Seite erstellten Variablen zur Verfügung. Auf diese kann im Template mit Hilfe des Symbols @, gefolgt vom Schlüsselwort, zugegriffen werden.
z.B. @title
Außerdem sind die in /content/_shared.txt
definierten Variablen in allen Templatedateien verfügbar.
Durch Stacey erstellte Variablen
Das Stacey System erstellt eine Reihe generell verfügbarer Variablen. Das sind:
- @root_path
- Ausgegeben wird der relative Pfad von der aktuellen Seite zum Wurzelverzeichnis der Website. z.B. in /projects/project-name/@root_path will contain ../../.
- @thumb
- Ausgegeben wird die relative URL zu einem Thumbnail für diese Seite (falls ein solcher existiert).
- @url
- Ausgegeben wird der relative Pfad zu dieser Seite ausgehend von der aktuell betrachteten Seite (z.B. ../../projects/project-1).
- @permalink
- Ausgegeben wird der absolute URL-Pfad der aktuellen Seite (z.B. projects/project-1).
- @slug
- Ausgegeben wird der slug der aktuellen Seite (z.B. project-1).
- @is_current
- Gibt true (wahr) zurück wenn @permalink der beim Server abgefragten URI entspricht.
- @is_first
- Gibt true (wahr) zurück, wenn die aktuelle Seite die erste einer Kollektion ist.
- @is_last
- Gibt true (wahr) zurück, wenn die aktuelle Seite die letzte einer Kollektion ist.
- @page_name
- Ausgegeben wird der Name der aktuellen Seite. Dieser wird gebildet, in dem der slug der Seite in einen title-case Text umwandelt (z.B. test-project-1 wird Test Project 1).
- @siblings_count
- Die Anzahl der Seiten, die sich auf der gleichen Ebene wie die aktuelle befinden (z.B. 12).
- @children_count
- Die Anzahl der Children unterhalb der aktuellen Seite (z.B. 12).
- @index
- Die Nummer der aktuellen Seite relativ zu den anderen Seiten auf der gleichen Ebene (z.B. 5).
- @current_year
- Gibt das aktuelle Jahr aus.
- @domain_name
- Gibt den Domainsnamen der aktuellen Seite aus (z.B. staceyapp.com).
- @base_url
- Gibt den Domainsnamen und das Verzeichnis, in dem Stacey läuft, aus (z.B. staceyapp.com/stacey).
- @site_updated
- Gibt das Datum aus, an dem die Website zuletzt verändert wurde. Das Format entspricht dem RFC 3339 Format (z.B. 2009-12-12T17:34:23+11:00).
- @updated
- Gibt das Datum aus, an dem die aktuelle Seite zuletzt verändert wurde. Das Format entspricht dem RFC 3339 Format (z.B. 2009-12-12T17:34:23+11:00).
- @stacey_version
- Gibt die aktuelle Verion von Stacey aus (z.B. 2.0).
Text-Datei Variablen
In einigen Fällen können Variablen auch innerhalb von .txt-Dateien genutzt werden. Das sind die Variablen:
- @path
- Ausgegeben wird der vollständige Pfad des Dateisystems zur aktuellen Seite. (z.B. /content/3.about)
- @bypass_cache
- Wenn diese Variable gesetzt ist, wird der Cache-Mechanismus des Stacey-Systems für diese Seite außer Kraft gesetzt.
$Kollektionen (Sammlungen/Zusammenstellungen)
Stacey stellt zwei Arten von Kollektionen bereit:
- Kollektionen zu miteinander in Beziehung (Eltern, Kinder usw.) stehenden Seiten
- Kollektionen zu Assets
Diese können jeweils mit foreeach
-Schleifen durchlaufen werden.
Seiten Kollektionen
Die Seitenkollektionen sind:
- $root
- Listet alle Seiten der höchsten Ebene innerhalb von /content auf.
- $children
- Listet alle untergeordneten Seiten ausgehend von der aktuellen Seite auf.
- $parents
- Listet den vollständgen Vorgänger-Baum ausgehend von der aktuellen Seite auf.
- $parent
- Gibt den direkten Vorgänger der aktuellen Seite aus.
- $siblings
- Gibt alle Seiten aus, die sich auf der gleichen Ebene wie die aktuelle befinden, beinhaltet nicht die aktuelle Seite.
- $siblings_and_self
- Gibt alle Seiten aus, die sich auf der gleichen Ebene wie die aktuelle befinden, beinhaltet auch die aktuelle Seite.
- $next_sibling
- Gibt eine Referenz zur nächsten Seite auf der gleichen Ebene wie die aktuelle Seite (in umgekehrter numerischer Reihenfolge).
- $previous_sibling
- Gibt eine Referenz zur vorherigen Seite auf der gleichen Ebene wie die aktuelle Seite (in umgekehrter numerischer Reihenfolge).
Asset Kollektionen
- $images
$video - Gibt eine Liste aus mit allen Garfikdateien oder Videodateien, die mit der aktuellen Seite verbunden sind (d.h. sich im gleichen verzeichnis wie die aktuelle Seite befinden). Wenn keine derartigen Dateien vorhanden sind, ist die Kolletion leer.
- $html,
$swf,
$mp3,
$pdf,
etc. - Zusätzlich erstellt Stacey Kollektionen zu allen anderen Dateitypen (außer .txt) die es innerhalb des Verzeichnisses der aktuellen Seite findet.
Read more about [asset types][].
:Partials
Partials dienen dazu, wieder verwendbaren HTML-Code auszulagern. Sie werden im Verzeichnis /templates/partials
abgelegt.
Dieses Verzeichniss kann wiederum Unterverzeichnisse enthalten (z.B. /templates/partials/naviagtion
für alle Partials der Navigation) um eine bessere Übersichtlichkeit zu gewährleisten. Das bedeutet aber auch, dass es keine zwei Partials mit gleichem Namen geben darf, auch wenn diese sich in unterschiedlichen Unterverzeichnissen befinden und/oder unterschiedliche Dateierweiterungen haben.
Partials werden in der Templatedatei angesprochen, in dem ein Doppelpunkt (:) gefolgt vom Dateinamen des Partials in die Templatedatei eingefügt wird. Beispiel: Das Partial /templates/partials/assets/images.html
wird im Template mit :images angesprochen.
Ebenso wie Templates müssen auch partials nicht zwingend vom Dateityp HTML sein. Stacey erkennt automatisch die Dateierweiterungen .html, .json, .xml, .atom, .rss, .rdf und .txt.
Partial Nesting
Partials können ineinander verschachtelt werden. So kann beispielsweise ein Partial :media in /templates/partials/assets/media.html
beinhalten:
if $images do
:images
endif
if $video do
:video
endif
um die entsprechenden Assets aufzurufen, falls sie vorhendne sind.
Recursive Partials
Partials können Referenzen auf sich selbst enthalten um so eine Rekursion durch verschachtelte zu ermöglichen (z.B. um einen Verzeichnissbaum zu durchlaufen).
So besteht ist es beispielsweise eleganter, an Stelle einer foreeach
-Schleife zwei verschachtelte Partials für die Erstellung einer Navigationsstruktur zu verwenden. Die sehen dann so aus:
/templates/partials/navigation/navigation.html
<ol id="navigation"> foreach $root do <li><a href="@url">@page_name</a> :children </li> endforeach </ol>
/templates/partials/navigation/children.html
if $children do <ol> foreach $children do <li><a href="@url">@page_name</a> :children </li> endforeach </ol> endif