Die Dateien eines typischen Drupal Themes im Einzelnen

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

Jetzt möchte ich Ihnen die Dateien eines typischen Drupal-Themes kurz vorstellen und ihre Funktion erklären.

10.3.1 Die Informationen zum Theme: themename.info

Ohne eine Datei themename.info wird Ihr Theme von Drupal nicht erkannt. Sie muss also vorhanden sein. Der Name dieser Datei ist im Beispiel garland_new.info. Der Vorname der Datei, also garland_new, wird zum Drupal-internen Namen des Themes. Auch das ist eine Änderung im Vergleich zu Drupal 5, wo der Name des Theme-Ordners zum internen Namen wurde. Es empfiehlt sich aber, für Theme-Ordner und themename.info den gleichen Namen zu verwenden.

Die folgenden Einträge sind in themename.info-Dateien erlaubt bzw. müssen teilweise vorhanden sein:

  • name (benötigt)
    name = Garland Neu
    Dieser Name wird auf der Theme-Administrationsseite (admin/build/themes) angezeigt und muss nicht mit dem Namen der themename.info-Datei übereinstimmen, wird aber meistens gleich sein.

  • description (empfohlen)
    description = Garland angepasst
    Die Beschreibung wird auf der Theme-Administrationsseite (admin/build/themes) unter dem Namen angezeigt.

  • screenshot (optional)
    screenshot = screenshot.png
    Hier kann ein frei gewählter Pfad für einen Screenshot des Themes angegeben werden. Der Screenshot wird auf der Theme-Administrationsseite (admin/build/themes) neben dem Namen angezeigt.

  • version (optional)
    version = 1.0
    Eine frei gewählte Versionsnummer. Bei Themes, die auf drupal.org veröffentlicht werden, wird diese Versionsnummer automatisch von drupal.org vergeben.

  • core (benötigt)
    core = 6.x
    Die Drupal-Core-Version mit, der das Theme kompatibel ist. Für alle Drupal 6-Themes muss hier 6.x stehen, sonst wird das Theme nicht angezeigt.

  • engine (empfohlen)
    engine = phptemplate
    Name der verwendeten Theme-Engine, in der Regel PHPTemplate.

  • base theme (optional)
    base theme = garland
    Nur für Sub-Themes. Das Sub-Theme Minnelli hat hier z.B. den Eintrag „Garland“.

  • regions (optional)
    regions[left] = Left sidebar
    regions[right] = Right sidebar
    regions[content] = Content
    regions[header] = Header
    regions[footer] = Footer

    Hier können die Regionen definiert werden, die dann auf der Block-Administrationsseite zur Verfügung stehen. Sind keine Regionen definiert, werden die oben angegebenen Standard-Regionen erzeugt. Drupal erzeugt den Inhalt in der Page-Variable mit dem maschinenlesbaren Namen in Klammern. Achtung: Um eine Region im Browser auszugeben, muss der Platzhalter, wie anfangs beschrieben, in der page.tpl.php platziert werden.

  • features (optional)
    features[] = logo
    features[] = name
    features[] = slogan
    features[] = mission
    features[] = node_user_picture
    features[] = comment_user_picture
    features[] = search
    features[] = favicon
    ; Durch das Auskommentieren durch Semikolon werden die
    ; Nachfolgenden Theme-Features ausgeblendet.
    ; features[] = primary_links
    ; features[] = secondary_links

    Auf der Theme-AdministrationssSeite des jeweiligen Themes (admin/build/themes/settings/ThemeName) stehen die Theme-Features zur Verfügung. Möchten Sie einige dieser Features deaktivieren, können Sie, wie oben, die entsprechenden Features durch Semikola auskommentieren.

  • stylesheets (optional)
    stylesheets[all][] = MeineEigeneStyle.css
    Hier kann die standardmäßig verwendete CSS-Datei definiert werden. Ist nichts definiert, wird style.css verwendet.

  • scripts (optional)
    scripts[] = script.js
    Hier kann eine standardmäßig verwendete Javascript-Datei definiert werden. Wenn nichts definiert wird, wird keine .js-Datei standardmäßig eingebunden.

  • php (optional)
    php = 4.3.3
    Hier kann eine PHP-Mindestversion angegeben werden. Standardmäßig wird die von Drupal erforderliche PHP-Version angenommen.

Der Inhalt dieser Datei wird von Drupal wie in Abbildung 10.3 dargestellt.

Anzeige auf der Theme-Administrationsseite
Abbildung 10.3: Anzeige auf der Theme-Administrationsseite

HINWEIS

Der Inhalt der themename.info-Datei wird im System-Cache gespeichert. Änderungen werden nicht sofort sichtbar. Hierzu müssen Sie den Cache leeren. Dies geht z.B. auf der Seite admin/settings/performance.

ACHTUNG

Der Name Ihres Themes darf nicht mit dem Namen eines der installierten Module übereinstimmen, da sich dadurch intern Konflikte bei den PHP-Funktionsnamen ergeben können!

10.3.2 Dateien mit der Endung *.tpl.php

Wenn auch optional, sind die Template-Dateien mit der Endung tpl.php zusammen mit den CSS-Dateien das Herzstück eines Themes. Typischerweise enthält ein Theme zumindest folgende Dateien:

  • page.tpl.php (enthält das HTML-Grundgerüst der Seite)

  • node.tpl.php (Ausgabe der einzelnen Nodes)

  • block.tpl.php (Ausgabe der einzelnen Blöcke)

  • comment.tpl.php (Ausgabe der Kommentare)

Werden keine eigenen Template-Dateien verwendet, nutzt Drupal die im Core enthaltenen Template-Dateien. Eine vollständige und aktuelle Liste der möglichen Template-Dateien, die Sie verwenden können, finden Sie auf drupal.org5.

Beim Aufruf der Template-Dateien geht PHPTemplate nach einer bestimmten Logik vor. Dabei sucht Drupal zuerst nach tpl.php-Dateien mit den oben erwähnten Namen. Um die Frontpage ihres Themes zum Beispiel anders zu gestalten, müssen Sie zusätzlich zur page.tpl.php im Theme-Ordner noch eine page-front.tpl.php anlegen. Weitere Möglichkeiten für die page.tpl.php-Dateien in absteigender Priorität:

  • page-node-edit.tpl.php (das Formular zur Bearbeitung eines Inhalts)

  • page-node-1.tpl.php (der Inhalt mit der ID 1)

  • page-node.tpl.php (jeder Inhalt)

  • page.tpl.php

Für die node.tpl.php zur Ausgabe von Nodes gibt es folgende Varianten:

  • node-story.tpl.php (Eigene Ausgabe für Story-Nodes)

  • node-blog.tpl.php (Eigene Ausgabe für Blog-Nodes)

  • node-IhrNodetype.tpl.php (Eigene Ausgabe für Nodes vom Typ „IhrNodetype“)

Auch für die block.tpl.php-Dateien gibt es diverse Möglichkeiten, die im Folgenden in absteigender Priorität gelistet werden:

  • block-module-delta.tpl.php (Delta ist die ID des Blocks)

  • block-module.tpl.php

  • block-region.tpl.php

  • block.tpl.php

10.3.3 Die Datei template.php

In der Datei template.php werden Theme-spezifische PHP-Funktionen platziert. template.php muss mit einem PHP-Opening-Tag <?php beginnen. Das PHP-Closing-Tag ?> ist nicht nötig und sollte nicht verwendet werden, da es unter Umständen zu Fehlermeldungen führen kann.

Icon HINWEIS

In den tpl.php-Dateien gibt es nur PHP-Platzhalter, in template.php hingegen fast nur PHP-Code!

Typische Funktionen, die in der template.php aufgerufen werden, bereiten beispielsweise Variablen für die Verwendung in den tpl.php-Dateien vor („pre-processing“). Funktionen in der template.php-Datei werden schneller ausgeführt als in tpl.php-Dateien. Weitere Informationen zu den Preprocess-Funktionen finden Sie auf drupal.org6.

Ein Beispiel aus dem Theme Garland ist die Funktion phptemplate_breadcrumb(), die aus dem Array $breadcrumb die Breadcrumb-Links (Brotkrumen-Navigation) von Drupals Core-Theme Garland erzeugt (Listing 10.2).

/**

* Return a themed breadcrumb trail.

*

* @param $breadcrumb

* An array containing the breadcrumb links.

* @return a string containing the breadcrumb output.

*/

function phptemplate_breadcrumb($breadcrumb) {

if (!empty($breadcrumb)) {

return '<div class="breadcrumb">'. implode(' › ', $breadcrumb) .'</div>';

}

}

Listing 10.2: Funktion phptemplate_breadcrumb() in der template.php

Falls Sie kein PHP sprechen und das Listing für Sie nur Gobbledygook ist, machen Sie sich keine Sorgen, denn diese Funktionen müssen Sie in der Regel nicht verändern.

10.3.4 Jedes Theme kann weitere Themes enthalten (Sub-Themes)

Ein weiteres Element, das in einem Theme-Ordner enthalten sein kann, ist ein Sub-Theme. Sub-Themes sind abhängig von dem jeweiligen Base-Theme, das in der subtheme.info-Datei definiert ist. Ein Beispiel aus dem Drupal-Core bietet das Sub-Theme Minnelli (eine Variante von Garland mit fester Breite). Zusätzlich zur CSS-Datei style.css von Garland lädt Minnelli die Datei minnelli.css durch folgenden Eintrag in der Datei minnelli.info.

stylesheets[all][] = minnelli.css


Jetzt möchte ich Ihnen die Dateien eines typischen Drupal-Themes kurz vorstellen und ihre Funktion erklären.10.3.1 Die Informationen zum Theme: themename.infoOhne eine Datei themename.info wird Ihr Theme von Drupal nicht erkannt. Sie muss also vorhanden sein. Der Name dieser Datei ist im Beispiel garland_new.info. Der Vorname der Datei, also garland_new, wird zum Drupal-internen Namen des Themes. Auch das ist eine Änderung im Vergleich zu Drupal 5, wo der Name des Theme-Ordners zum internen Namen wurde. Es empfiehlt sich aber, für Theme-Ordner und themename.info den gleichen Namen zu verwenden.Die folgenden Einträge sind in themename.info-Dateien erlaubt bzw. müssen teilweise vorhanden sein:name (benötigt) name = Garland Neu Dieser Name wird auf der Theme-Administrationsseite (admin/build/themes) angezeigt und muss nicht mit dem Namen der themename.info-Datei übereinstimmen, wird aber meistens gleich sein.description (empfohlen) description = Garland angepasst Die Beschreibung wird auf der Theme-Administrationsseite (admin/build/themes) unter dem Namen angezeigt.screenshot (optional) screenshot = screenshot.png Hier kann ein frei gewählter Pfad für einen Screenshot des Themes angegeben werden. Der Screenshot wird auf der Theme-Administrationsseite (admin/build/themes) neben dem Namen angezeigt.version (optional) version = 1.0 Eine frei gewählte Versionsnummer. Bei Themes, die auf drupal.org veröffentlicht werden, wird diese Versionsnummer automatisch von drupal.org vergeben.core (benötigt) core = 6.x Die Drupal-Core-Version mit, der das Theme kompatibel ist. Für alle Drupal 6-Themes muss hier 6.x stehen, sonst wird das Theme nicht angezeigt.engine (empfohlen) engine = phptemplate Name der verwendeten Theme-Engine, in der Regel PHPTemplate.base theme (optional) base theme = garland Nur für Sub-Themes. Das Sub-Theme Minnelli hat hier z.B. den Eintrag „Garland“.regions (optional) regions[left] = Left sidebar regions[right] = Right sidebar regions[content] = Content regions[header] = Header regions[footer] = Footer Hier können die Regionen definiert werden, die dann auf der Block-Administrationsseite zur Verfügung stehen. Sind keine Regionen definiert, werden die oben angegebenen Standard-Regionen erzeugt. Drupal erzeugt den Inhalt in der Page-Variable mit dem maschinenlesbaren Namen in Klammern. Achtung: Um eine Region im Browser auszugeben, muss der Platzhalter, wie anfangs beschrieben, in der page.tpl.php platziert werden.features (optional) features[] = logo features[] = name features[] = slogan features[] = mission features[] = node_user_picture features[] = comment_user_picture features[] = search features[] = favicon ; Durch das Auskommentieren durch Semikolon werden die ; Nachfolgenden Theme-Features ausgeblendet. ; features[] = primary_links ; features[] = secondary_links Auf der Theme-AdministrationssSeite des jeweiligen Themes (admin/build/themes/settings/ThemeName) stehen die Theme-Features zur Verfügung. Möchten Sie einige dieser Features deaktivieren, können Sie, wie oben, die entsprechenden Features durch Semikola auskommentieren.stylesheets (optional) stylesheets[all][] = MeineEigeneStyle.css Hier kann die standardmäßig verwendete CSS-Datei definiert werden. Ist nichts definiert, wird style.css verwendet.scripts (optional) scripts[] = script.js Hier kann eine standardmäßig verwendete Javascript-Datei definiert werden. Wenn nichts definiert wird, wird keine .js-Datei standardmäßig eingebunden.php (optional) php = 4.3.3 Hier kann eine PHP-Mindestversion angegeben werden. Standardmäßig wird die von Drupal erforderliche PHP-Version angenommen.Der Inhalt dieser Datei wird von Drupal wie in Abbildung 10.3 dargestellt. Abbildung 10.3: Anzeige auf der Theme-AdministrationsseiteHINWEISDer Inhalt der themename.info-Datei wird im System-Cache gespeichert. Änderungen werden nicht sofort sichtbar. Hierzu müssen Sie den Cache leeren. Dies geht z.B. auf der Seite admin/settings/performance.ACHTUNGDer Name Ihres Themes darf nicht mit dem Namen eines der installierten Module übereinstimmen, da sich dadurch intern Konflikte bei den PHP-Funktionsnamen ergeben können!10.3.2 Dateien mit der Endung *.tpl.phpWenn auch optional, sind die Template-Dateien mit der Endung tpl.php zusammen mit den CSS-Dateien das Herzstück eines Themes. Typischerweise enthält ein Theme zumindest folgende Dateien:page.tpl.php (enthält das HTML-Grundgerüst der Seite)node.tpl.php (Ausgabe der einzelnen Nodes)block.tpl.php (Ausgabe der einzelnen Blöcke)comment.tpl.php (Ausgabe der Kommentare)Werden keine eigenen Template-Dateien verwendet, nutzt Drupal die im Core enthaltenen Template-Dateien. Eine vollständige und aktuelle Liste der möglichen Template-Dateien, die Sie verwenden können, finden Sie auf drupal.org5.Beim Aufruf der Template-Dateien geht PHPTemplate nach einer bestimmten Logik vor. Dabei sucht Drupal zuerst nach tpl.php-Dateien mit den oben erwähnten Namen. Um die Frontpage ihres Themes zum Beispiel anders zu gestalten, müssen Sie zusätzlich zur page.tpl.php im Theme-Ordner noch eine page-front.tpl.php anlegen. Weitere Möglichkeiten für die page.tpl.php-Dateien in absteigender Priorität:page-node-edit.tpl.php (das Formular zur Bearbeitung eines Inhalts)page-node-1.tpl.php (der Inhalt mit der ID 1)page-node.tpl.php (jeder Inhalt)page.tpl.phpFür die node.tpl.php zur Ausgabe von Nodes gibt es folgende Varianten:node-story.tpl.php (Eigene Ausgabe für Story-Nodes)node-blog.tpl.php (Eigene Ausgabe für Blog-Nodes)node-IhrNodetype.tpl.php (Eigene Ausgabe für Nodes vom Typ „IhrNodetype“)Auch für die block.tpl.php-Dateien gibt es diverse Möglichkeiten, die im Folgenden in absteigender Priorität gelistet werden: block-module-delta.tpl.php (Delta ist die ID des Blocks)block-module.tpl.php block-region.tpl.phpblock.tpl.php10.3.3 Die Datei template.phpIn der Datei template.php werden Theme-spezifische PHP-Funktionen platziert. template.php muss mit einem PHP-Opening-Tag &lt;?php beginnen. Das PHP-Closing-Tag ?&gt; ist nicht nötig und sollte nicht verwendet werden, da es unter Umständen zu Fehlermeldungen führen kann.Icon HINWEISIn den tpl.php-Dateien gibt es nur PHP-Platzhalter, in template.php hingegen fast nur PHP-Code!Typische Funktionen, die in der template.php aufgerufen werden, bereiten beispielsweise Variablen für die Verwendung in den tpl.php-Dateien vor („pre-processing“). Funktionen in der template.php-Datei werden schneller ausgeführt als in tpl.php-Dateien. Weitere Informationen zu den Preprocess-Funktionen finden Sie auf drupal.org6.Ein Beispiel aus dem Theme Garland ist die Funktion phptemplate_breadcrumb(), die aus dem Array $breadcrumb die Breadcrumb-Links (Brotkrumen-Navigation) von Drupals Core-Theme Garland erzeugt (Listing 10.2)./*** Return a themed breadcrumb trail.** @param $breadcrumb* An array containing the breadcrumb links.* @return a string containing the breadcrumb output.*/function phptemplate_breadcrumb($breadcrumb) {if (!empty($breadcrumb)) {return '&lt;div class="breadcrumb"&gt;'. implode(' › ', $breadcrumb) .'&lt;/div&gt;';}}Listing 10.2: Funktion phptemplate_breadcrumb() in der template.phpFalls Sie kein PHP sprechen und das Listing für Sie nur Gobbledygook ist, machen Sie sich keine Sorgen, denn diese Funktionen müssen Sie in der Regel nicht verändern.10.3.4 Jedes Theme kann weitere Themes enthalten (Sub-Themes)Ein weiteres Element, das in einem Theme-Ordner enthalten sein kann, ist ein Sub-Theme. Sub-Themes sind abhängig von dem jeweiligen Base-Theme, das in der subtheme.info-Datei definiert ist. Ein Beispiel aus dem Drupal-Core bietet das Sub-Theme Minnelli (eine Variante von Garland mit fester Breite). Zusätzlich zur CSS-Datei style.css von Garland lädt Minnelli die Datei minnelli.css durch folgenden Eintrag in der Datei minnelli.info.stylesheets[all][] = minnelli.css5 http://drupal.org/node/1908156 http://drupal.org/node/223430

2 Kommentare

Ich finde diese Dokumentation

Submitted by Guest on 2. February 2011 - 1:08.

Ich finde diese Dokumentation und Einführung in Drupal sehr gut. Habe bis jetzt noch nichts besseres gefunden. Habe hier auch noch ein Buch von Hagen Graf liegen zur Drupal Version 4.x und dort hat er auch schon sehr gut die Funktionen von Drupal beschrieben. Bin sehr begeistert macht weiter so.

Jedoch eine Anmerkung habe ich noch:

Im Punkt 5 für die themename.info ist ein Fehler für die Core-Version. Dort darf in der Datei nicht name=6.x, sonder dort muss core = 6.x stehen, da sonst der name des Themes mit der eigentlich gemeinten Core-Versionsnummer überschrieben wird.

Danke für Lob und Hinweis,

Submitted by Hagen Graf on 2. February 2011 - 11:18.

Danke für Lob und Hinweis, hab's geändert :-)

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