Aufbau eines Themes in Drupal

Verfasst von Hagen Graf am 28. July 2008 - 19:11

von Jochen Meyer

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.

von Jochen MeyerIn diesem Abschnitt möchte ich Ihnen die Eigenheiten von Drupal-Themes näher bringen.10.2.1 Drupals Theme-Engine: PHPTemplateUm 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:Abbildung 10.1: Aufbau eines typischen PHPTemplate Drupal-ThemesDie 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 &lt;?php ?&gt;-Tags). Jedes Mal, wenn Drupal einen Block ausgibt, wird diese Template-Datei aufgerufen und mit Inhalten befüllt.&lt;div id="block-&lt;?php print $block-&gt;module .'-'.$block-&gt;delta; ?&gt;" class="block block-&lt;?php print $block-&gt;module ?&gt;"&gt;&lt;?php if ($block-&gt;subject): ?&gt;&lt;h2&gt;&lt;?php print $block-&gt;subject ?&gt;&lt;/h2&gt;&lt;?php endif;?&gt;&lt;div class="content"&gt;&lt;?php print $block-&gt;content ?&gt;&lt;/div&gt;&lt;/div&gt;Listing 10.1: aus dem Drupal-Core (modules/system/block.tpl.php)10.2.2 Aufbau eines Themes in Drupal 6Drupal 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.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 Zeileregions[neue_region] = Neue Regionwird die Region automatisch von Drupal erzeugt. Der Inhalt dieser Region wird in der neu erzeugten Variable $neue_region ausgegeben. Durch entsprechende Verwendung des Platzhalters &lt;?php print $neue_region ?&gt; in der Datei page.tpl.php wird der Inhalt dieser Variablen im Browser ausgegeben.

0 Kommentare

Kommentar hinzufügen

  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <br><pre>
  • Zeilen und Absätze werden automatisch erzeugt.

Weitere Informationen über Formatierungsoptionen