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.
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.
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.
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.
/modules/event/event.theme und trägt den Namen event_upcoming_item(). Der Funktionname ist wichtig, um diese Funktion selbst überschreiben zu können.template.php. Dies ist die Basisdatei, in ihr werden die Funktionen definiert, die überschrieben werden sollen.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.
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.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.
Das Buch zu drupal von Hagen Graf beschreibt das Erstellung und Verwalten einer Webseite mit drupal.
hallo,
sowas suche ich auch für eine seite (motorsport in drupal), wo kann ich das modul erhalten / downloaden ?
danke und gruß
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.