10.2 Aufbau eines Themes in Drupal

In diesem Abschnitt möchte ich Ihnen die Eigenheiten von Drupal-Themes näher bringen.

10.2.1 Drupals Theme-Engine: PHPTemplate

Um eine Seite für die Browserausgabe vorzubereiten, werden von Drupal normalerweise mehrere Template-Dateien hintereinander aufgerufen. Die einzelnen Elemente einer Drupal-Seite wie Nodes und Blöcke besitzen jeweils eigene Template-Dateien.

Welche Template-Dateien bei einem Seiten-Abruf in welcher Reihenfolge geladen werden, bestimmt die so genannte Theme-Engine (Anzeige-Maschine). Die Drupal-Entwickler haben eine eigene Theme-Engine entwickelt, die im Drupal-Core enthalten ist: PHPTemplate. PHPTemplate-Dateien haben immer die Datei-Endung tpl.php:

Aufbau eines typischen PHPTemplate Drupal-Themes
Abbildung 10.1: Aufbau eines typischen PHPTemplate Drupal-Themes

Die wichtigsten Template-Dateien eines Drupal Themes sind

  • page.tpl.php: Dient als Rahmen der Seite und enthält strukturelle HTML-Elemente wie z.B. html, head und body sowie Informationen über eingebundene Javascript- und CSS-Dateien.

  • node.tpl.php: Fast alle Inhalte werden in Drupal als Nodes in der Datenbank gespeichert. Bei der Ausgabe von Nodes, egal ob als Teaser oder seitenfüllend, wird diese Datei verwendet.

  • block.tpl.php: Wird für die Ausgabe von Blöcken aufgerufen.

Den Inhalt einer typischen Template-Datei sehen Sie in Listing 1, und zwar am Beispiel von block.tpl.php aus dem Ordner [drupal]/modules/system/. Die Datei besteht aus XHTML-Elementen und Platzhaltern in Form von PHP-Code (eingeschlossen in <?php ?>-Tags). Jedes Mal, wenn Drupal einen Block ausgibt, wird diese Template-Datei aufgerufen und mit Inhalten befüllt.

<div id="block-<?php print $block->module .'-'.
$block->delta; ?>" class="block block-<?php print $block->module ?>">
<?php if ($block->subject): ?>

<h2><?php print $block->subject ?></h2>

<?php endif;?>

<div class="content">

<?php print $block->content ?>

</div>
</div>

Listing 10.1: aus dem Drupal-Core (modules/system/block.tpl.php)

10.2.2 Aufbau eines Themes in Drupal 6

Drupal 6 erleichtert das Leben eines Themers im Vergleich zu den Vorgängerversionen deutlich und ermöglicht Änderungen am Theme auch für Menschen ohne tiefgehende PHP-Kenntnisse.

Dies betrifft in erster Linie so genannte Funktionen, die in Drupal 5 noch die Datei template.php benötigten. Sie können jetzt teilweise bequem über die themename.info-Datei völlig ohne PHP-Kenntnisse konfiguriert werden.

Als Beispiel verwende ich hier das Drupal-Core-Theme Garland. Um Änderungen zu veranschaulichen, habe ich den Inhalt des Ordners themes/garland in das Verzeichnis sites/all/themes/garland_new kopiert.

Die mitgelieferten Core-Themes liegen im Ordner /drupal/themes, alle anderen Themes hingegen in sites/all/themes oder bei einer Multisite-Installation (siehe Abschnitt 9.9 Multisite: Viele Sites mit einem Drupal) im entsprechenden Website-Ordner.

Struktur des Drupal 6-Core-Themes "Garland Neu" (für dieses Kapitel modifiziert)
Abbildung 10.2: Struktur des Drupal 6-Core-Themes „Garland Neu“ (für dieses Kapitel modifiziert)

Die Struktur des veränderten Garland-Themes können Sie Abbildung 2 entnehmen. Dabei ist rechts der Inhalt der für dieses Kapitel angepassten Datei garland_new.info abgebildet.

Alle Regionen liefern eine Variable mit ihrem Inhalt, der in page.tpl.php ausgegeben wird.

Seit Drupal 6 lassen sich die Regionen, die später auf der Block-Administrationsseite zur Verfügung stehen, hier definieren. Durch das Einfügen der Zeile

regions[neue_region] = Neue Region

wird die Region automatisch von Drupal erzeugt. Der Inhalt dieser Region wird in der neu erzeugten Variable $neue_region ausgegeben. Durch entsprechende Verwendung des Platzhalters <?php print $neue_region ?> in der Datei page.tpl.php wird der Inhalt dieser Variablen im Browser ausgegeben.

Ihre Bewertung: Nichts Durchschnitt: 4.5 (4 Stimmen)