Templates

Aus DynPG-Wiki
Wechseln zu: Navigation, Suche

Einführung

Mit DynPG ist es möglich die Art und Weise wie Artikel und Listenansichten ausgegeben werden, zu beeinflussen. Ein Weg ist CSS, ein anderer (wesentlich flexiblerer) geht über die eingebaute Template-Engine. Ein Beispiel: Der Aufruf

$DynPG->Write_Article();

bewirkt, dass die Detailansicht eines Artikels angezeigt wird. Dabei wird (wenn nichts anderes explizit angegeben wurde) implizit ein Standard-Template verwendet, das definiert wie diese Ansicht auszusehen hat. Im DynPG-Unterverzeichnis "/tpl/MyCMS/default/" liegen die Templatedateien für die Standardansichten.

  • groups.tpl: Gruppenlistenansicht
  • articles.tpl: Artikellistenansicht
  • detail.tpl: Artikel-Detailansicht
  • home.tpl: Home-Ansicht
  • navigation.tpl: Blätterfunktion der Listen-Ansichten
  • search-form.tpl: Formular für die Suche

In diesen Dateien haben Sie die Möglichkeit, oben genannte Ansichten nach Ihren Wünschen anzupassen. Die Darstellung geschieht grundsätzlich mit HTML. Zusätzlich gibt es eine Templatesprache. Diese ist schlicht gehalten und beinhaltet einige wenige Elemente die nachfolgend näher betrachtet werden sollen. Statt die Standard-Templates zu manipulieren, können auch neue Templates erzeugt werden. Dazu muss im Unterverzeichnis "/tpl/MyCMS/" einfach ein neuer Ordner mit dem gewünschten Templatenamen angelegt werden. Je nachdem welche Ansichten nun geändert werden sollen, fügt man Dateien mit denselben Namen wie in oben genannter Liste ein. Diese können dann nach den eigenen Wünschen bearbeitet werden. Mit den Zeilen

$DynPG->setupTemplate("meinTemplate");
 
$DynPG->SetParam_A_Article(13);
 
$DynPG->Write_Article();
 
$DynPG->setupTemplate("default");

wird das Template meinTemplate gesetzt und damit der Artikel 13 ausgegeben.


Caution.png Achtung: Das Setzen eines Templates muss vor der Ausgabe des Artikels erfolgen!

Caution.png Achtung: Wenn das Template gesetzt wurde, dann wird es auch für alle nachfolgenden Ausgaben verwendet! Ist dies unerwünscht, muss man explizit wieder das Standard-Template(default) setzen.

Die Template-Sprache

Ein erstes kleines Beispiel

Hier ein kleines einführendes Beispiel:

Template-Minimalbeispiel (eigene Artikel-Detailansicht in "/tpl/MyCMS/minimal/detail.tpl")

<!-- Dies ist ein Kommentar (er wird nicht angezeigt) -->
{$CONTENT} <!--Den Inhalt des Artikels ausgeben--> 
 
Dies ist ein <b>selbstdefiniertes Template</b>  <!--beliebiger HTML-Code-->
 
<!--Alles was hier drinsteht, wird nach dem Aufruf von $DynPG->Write_Article(); eingefügt -->

Im ordner dem Ordner "/tpl/MyCMS/minimal" wurde ein eigenes Template angelegt. In diesen Ordner verschieben wir eine Datei 'detail.tpl, die obigen Inhalt aufweist. Damit haben wir uns eine eigene Artikel-Detailansicht definiert, die jetzt jederzeit in irgendeiner Seite verwendet werden kann, indem folgender Code eingefügt wird:

$DynPG->setupTemplate("minimal");
 
$DynPG->SetParam_A_Article(13);
 
$DynPG->Write_Article();

{$CONTENT} ist ein Platzhalter für den Inhalt des anzuzeigenden Artikels. An dieser Stelle wird dann also der eigentliche Artikeltext eingefügt (genau das erledigt die Templateengine). Eine Liste der Templatevariablen (Platzhalter) finden Sie in der Template-Referenz.

Die Templatesprache hat neben den Templateplatzhaltern noch 2 andere wichtige Sprachelemente. Dies sind die bedingte Anweisung und der PHP-Block, der es ermöglicht PHP-Anweisungen auszuführen. In die Template-Datei kann zudem auch beliebiger HTML-Code eingefügt werden, wodurch die Gestaltungsmöglichkeiten noch vielfältiger werden.

Die bedingte Anweisung

Folgendes Beispiel zeigt, wie man bedingte Anweisungen in seine Templates integrieren kann:

Template-Beispiel (Artikel-Detailansicht mit bedingter Anweisung)

<!--Wenn Artikelname = "Kontakt" dann Inhalt + zusätzliche Infos ausgeben-->
 
{$# ('{$TITLE}'=='Kontakt') #}
 
{$CONTENT}
 
mein <b>Lieblingsartikel</b>!
 
{$# End #}
 
<!--andernfalls nur den Inhalt ausgeben-->
 
{$# ('{$TITLE}'!='Kontakt') #}
 
{$CONTENT}
 
{$# End #}

Hier wird der Text "mein Lieblingsartikel!" nur dann ausgegeben, wenn der Artikel den Namen "Kontakt" trägt. Die Syntax für bedingte Anweisungen lautet allgemein:

{$#(Bedingung) #}
 
...
 
{$# End #}

Caution.png Achtung: Bei Zeichenkettenvergleichen (wie in obigem Bsp.) muss darauf geachtet werden, dass auch die Templatevariablen von Anführungszeichen umgeben werden, sonst hagelt es Fehlerausschriften.

Tip.png Tipp: Die Bedingung wird als PHP-Code ausgewertet, daher können prinzipiell alle Operatoren verwendet werden, solange der Ergebnisausdruck einen Wahrheitswert liefert.

Schauen wir uns ein Beispiel mit Negation an.

<table>
    <tr>
      <td> {$TITLE} </td>
    </tr>
  {$# ({$SHOWDATE}) #}
    <tr>
      <td> Erstellt am: {$CREATEDATE} </td>
    </tr>
  {$# End #}
  {$# (!{$SHOWDATE}) #}
    <tr>
      <td> Anzeige ohne Erstelldatum </td>
    </tr>
  {$# End #}
    <tr>
      <td> {$CONTENT} </td>
    </tr>
</table>

Das obige Beispiel gibt den Artikel mit seinem Erstelldatum aus, falls das entsprechende Häkchen im Backend angeklickt wurde, ansonsten wird "Anzeige ohne Erstelldatum" ausgegeben.

PHP-Code

{$#PHP (PHP-CODE) #}

Mit dieser Syntax können Sie PHP-Code implementieren. Alles was in der Klammer steht, wird als PHP-Code interpretiert. Es kommt dem Tag

<?php ... ?>

einer PHP-Seite gleich. Auch hier ein kleines Beispiel:

Template-Beispiel (Artikel-Detailansicht mit PHP-Code)

<!--Zeichenlänge des Titels anzeigen-->
 
Die Länge des Titels beträgt {$#PHP (strlen("{$TITLE}")) #} Zeichen 
 
{$CONTENT} <!--Inhalt ausgeben-->

Caution.png Achtung: Am Ende eines PHP-Statements darf kein Semikolon (";") stehen, wie sonst üblich!

Diese Informationen als PDF

Teile dieses Artikels sind auch in Templates.pdf enthalten. Diese Datei wird jedoch wahrscheinlich nicht mehr aktualisiert und ist damit nicht so aktuell wie dieser Artikel.