atnexxt – Agentur für Design und E-Business

atnexxt

Nachrichtenblog

Stefan Weißwange schrieb am 14.02.2006 zum Thema: Programmierung,Webdesign.

Sie können einen Kommentar verfassen oder einen Trackback von Ihrer eigenen Seite senden.

Überschreiben von moduleigenen Themes in drupal

Was ist drupal

Drupal ist ein CMS, das als Community-CMS konzipiert wurde. Es beinhaltet sehr viele Möglichkeiten, um mit einer Website eine Community, eine Gemeinschaft der Besucher, technisch zu unterstützen. In der Basiskonfiguration sind Foren, Weblogs sowie Kommentarfunktionen enthalten.
Drupal bietet die Möglichkeit, aus vielen verschiedenen Themes, also Designs, zu wählen oder ein eigenes zu erstellen, um seine eigenen Ideen der Gestaltung umsetzen zu können. Realisiert werden die Themes über PHPTemplate, ein System das die aus PHP und HTML-Code bestehenden Templates in das drupal-System integriert.

Erweiterung von Themes

Diese Gestaltung von eigenen Layouts stößt an ihre Grenzen, wenn man Erweiterungen, die so genannten Module benutzt. Gestalterisch läßt sich mittels CSS das Erscheinungsbild der Komponenten ändern, aber wenn es darum geht, bestimmte Texte auszutauschen oder den Code des Moduls oder einer bestimmten Drupal-Funktion zu ändern, muß etwas Hand angelegt werden. Diese Möglichkeit bietet PHPTemplate durch das Überschreiben von Template-Funktionen. Ich möchte am Beispiel des Event-Moduls erläutern, wie das Überschreiben dieser Funktionen ermöglicht wird.

Überschreiben von Theme-Funktionen

Das Event-Modul stellt eine Funktion bereit, die eine Liste der nächsten fünf Termine anzeigt. An dieser Liste waren einige Dinge zu ändern, so sollte zum Beispiel die Beschreibung der Terminart wegfallen. Dies direkt im Modul zu ändern ist zwar möglich, aber man steht vor Problemen, wenn das Modul auf einen neueren Stand gebracht wird, da dann die Änderung wieder manuell nachgetragen werden muss. Also nutzen wir die Funktion zum Überschreiben von Templatefunktionen.

Ermitteln der Funktion, die die Ausgabe gestaltet
Die originale Funktion, die die Liste erzeugt liegt in /modules/event/event.theme und trägt den Namen event_upcoming_item(). Der Funktionname ist wichtig, um diese Funktion selbst überschreiben zu können.
Erstellen der Basisdatei
Um eine Funktion überschreiben zu können, benötigt man im Verzeichnis des benutzten Themes eine Datei namens template.php. Dies ist die Basisdatei, in ihr werden die Funktionen definiert, die überschrieben werden sollen.
Erstellen der Basisfunktion
Diese Anweisung ist relativ einfach, man erstellt eine Funktion mit dem Namen phptemplate_ und ergänzt den Namen der Originalfunktion, den wir weiter oben ermittelt haben. Die komplette Funktion:

function phptemplate_event_upcoming_item( $node ) 
{
	return _phptemplate_callback( 'event_upcoming_item', array( $node ) );
}

Der Parameter, mit dem die Funktion aufgerufen wird, in userem Fall $node, muß natürlich dem originalen Parameter entsprechen. Der Aufruf der Funktion _phptemplate_callback() erfolgt mit dem originalen Funktionsnamen und einem Array, das den für die Funktion nötigen Parameter enthält.
Diese Datei mit der Funktion ist die Basis zum Überschreiben, die Funktion, die das eigentliche Überschreiben übernimmt, erstellen wir jetzt.

Erstellen der Überschreibungsfunktion
Die eigentliche Funktion zum Überschreiben wird in einer Datei plaziert, die wiederum den Namen der Originalfunktion trägt, in unserem Beispiel event_upcoming_item.tpl.php. In dieser Datei wird nun eine Funktion _phptemplate_event_upcoming_item( $node ), die mit dem entsprechenden Parameter aufgerufen wird. In die Funktion kopiert man der Einfachheit halber die Originalfunktion und verändert diese dann nach Bedarf.
Zu Beachten
Ab dem Moment der Erstellung der Überschreibungsfunktion reagiert PHPTemplate auf diese und nutzt sie auch zum erzeugen der Darstellung. Zum Abschalten der neu erstellten Funktion reicht das Auskommentieren des betreffenden Blocks in der template.php.

Überschreiben von Theme-Funktionen

Das Überschreiben von Themefunktionen ist ein mächtiges Werkzeug, mit dem man eine vom drupal-System völlig unabhängige Darstellung von Modulen erzeugen kann. Durch die einfache Integration eigener Funktionen kann man eine Seite, die mit drupal erzeugt wird, nach seinen Vorstellungen gestalten.

weiterlesen:

Literatur

Das Drupal-Buch bei Amazon.de kaufenDas Buch zu drupal von Hagen Graf beschreibt das Erstellung und Verwalten einer Webseite mit drupal.

Weblinks


2 Antworten auf „Überschreiben von moduleigenen Themes in drupal”

  1. holger schrieb am: 21. Mai 2006 um 17:05

    hallo,

    sowas suche ich auch für eine seite (motorsport in drupal), wo kann ich das modul erhalten / downloaden ?

    danke und gruß

  2. Stefan Weißwange schrieb am: 02. Juni 2006 um 09:06

    Das Modul, das wir „erweitert” haben, gibt es nicht zum Download, da es hier im Artikel ja nur die Änderung der Anzeige, also der Ausgabe, des Modules geht. Das Event-Modul selbst gibt es zum Download direkt bei drupal.org: drupal.org/project/event.

Möchten Sie einen Kommentar verfassen?

XHTML: Folgende Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>