Drupal Themes und Drupal Templates

24iX SYSTEMS

Themes (Templates) erstellen mit Drupal

Opens internal link in current windowDrupal Templates installieren
Opens internal link in current windowDrupal Templates erstellen
Opens internal link in current windowDrupal Templates verstehen
Opens internal link in current windowDrupal Node Templates
Opens internal link in current windowDrupal Block Templates

Überblick
Wie bei allen besseren Content Management Systemen (CMS) sind auch bei Drupal Inhalte und Layout getrent. Die oder das Layout für Teile oder der gesamten Webpräsenz werden in einem eigenständigen Verzeichnis gespeichert. In anderen CMS werden diese häufig als Templates (Vorlagen) bezeichnet. In Drupal wird der Begriff Theme benutzt.

Um ein Drupal Theme zu erstellen muss kein Source angepackt oder geändert werden.  Ein Drupal Theme besteht aus drei Abstraktionslayern, das Theme selbst, die Templatesprache und die Template - Engine. Die Template Engine ist sozusagen das Interface zwischen Drupal und der Templatesprache. Auf Drupal.org findet man zumindest für die wichtigsten Templatesprachen eine Drupal Template Engine. In einem Multisite-Setup kopieren Sie die Template-Engine in das Verzeichnis  ../sites/all/themes/engines (siehe Abbildung).

Drupal Themes und Templates Verzeichnis

Drupal PHPTemplate

Die am häufigsten eingesetzte und am besten unterstützte Template Engine ist das sogenannte PHPTemplate. Es benutzt PHP als Templatesprache und ist in jeder Basisinstallation im Verzeichnis ../themes/engines/phptemplates enthalten.
Themes bestehen in der Regel aus den eigentlichen Templates-Files, Stylesheets, JavaScript und Bildern. Der Inhalt der Templates Files hängt von der eingesetzen Template-Engine ab. Die Syntax variiert sehr stark von Tempalte-Engine zu Template-Engine. Im Falle von PHPTemplates finden Sie reines HTML mit etwas PHP, durch das der dynamische Content erzeugt wird.

Auszug aus Drupal PHPTemplate File

Drupal PHPTemplate
  1. ...
  2. <div id="topnavigation">
  3. <?php if (count($secondary_links)) : ?>
  4. <ul id="sec-links">
  5. <?php foreach ($secondary_links as $link) :?>
  6. <li class="secondarylink"> ?php print $link ?></li>
  7. <?php enforeach; ?>
  8. <ul>
  9. ....