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