Anfänger Leitfaden zum Überschreiben themebarer Ausgaben
[ Hier entsteht die Übersetzung von http://drupal.org/node/457740 ]
Wenn du eine Webseite mit Drupal aufbaust wirst du an den Punkt kommen, dass dir das vorgegebene HTML von Drupal, einem Core Modul oder einem zusätzlichen Modul aus irgendeinem Grund nicht gefällt und du es ändern möchtest.
Die meisten dieser HTML Ausgaben sind überschreibbar.
Anstatt Änderungen im Modul direkt vorzunehmen (was nicht zu empfehlen ist, weil es spätere Upgrades erschwert), kannst du die Ausgabe ändern indem du Funktionen oder Dateien zu deinem Theme hinzufügst. Diese werden dann Vorrang haben vor den originalen Ausgaben aus den Modulen.
Es gibt verschiedene Möglichkeiten themebare Ausgaben zu überschreiben, wie du auf den anderen Seiten in diesem Abschnitt nachlesen kannst. Diese Seite gibt einen Überblick über die gängigsten Möglichkeiten für Einsteiger.
Vermeiden dass man überhaupt überschreiben muss
Bevor du entscheidest dass du die Ausgabe von Drupal oder einem Modul auf deiner Seite überschreiben musst, prüfe die folgenden Möglichkeiten -- vielleicht kannst du es so vermeiden:
- Kannst du einfach eine Einstellung ändern? Z.B. kannst du auf den "Konfigurieren" Button für jeden Block klicken und dort den Titeltext ändern oder den Titel komplett ausblenden (du kannst die Blöcke in den Einstellungen auch in andere Regionen deiner Site verschieben).
Auch für andere Module kannst du in den Einstellungen z.T. die Ausgabe verändern (Label für Textfelder, Reihenfolge, usw). Um die jeweiligen Einstellungen zu finden klicke auf "Verwalten", dann auf "Nach Modul" und sieh dir alle Einstellungen des Moduls an.
Manche Einstellungen finden sich auch in der Konfiguration des Themes und manche in den verschiedenen Tabs auf den Einstellungs-Seiten der Inhaltstypen (Inhaltsverwaltung >> Inhaltstypen). - Kannst du dein Ziel mit Hilfe von CSS erreichen? Nahezu jede Ausgabe von Drupal ist eingeschlossen von DIV Elementen mit spezifischen Klassen oder IDs und so lassen sich die einzelnen Teile einfach anpassen. Mit CSS kannst du Schriften, Größen, Position, Hintergrundbilder usw ändern. Deine Änderungen kannst du in eine CSS Datei deines Themes einfügen.
Falls du mit diesen Methoden deine gewünschten Änderungen nicht erreichen kannst, dann musst du wirklich die HTML Ausgabe von Drupal oder einem Modul ändern -- lies weiter.
Herausfinden wo die Ausgabe erzeugt wird
Der erste Schritt beim Überschreiben von Drupal's HTML Ausgabe ist herauszufinden wo sie erzeugt wird. Was du suchst ist entweder eine Theme Funktion (eine PHP function namens theme_xyz wie z.B. "theme_search" oder "theme_aggregator_block_item"), eine Template Präprozessor Funktion (eine PHP function namens "template_preprocess_xyz") oder eine Template-Datei (eine PHP Datei mit der Endung .tpl.php wie z.B. "views-more.tpl.php").
Um die richtige Datei oder Funktion zu finden lokalisiere zuerst das zuständige Modul (im Verzeichnis "modules", "sites/all/modules" oder "sites/dein_unterverzeichnis/modules").
Template-Dateien sind im allgemeinen direkt im Modulverzeichnis, in einem Sub-Modul Verzeichnis oder in einem Unterverzeichnis namens "theme" zu finden.
Theme- und Präprozessor-Funktionen befinden sich im allgemeinen in einer Modul-Datei (mit der Endung .module) oder in einer Include-Datei (normalerweise mit der Endung .inc) im Modulverzeichnis oder Unterverzeichnis.
Ein guter Weg die richtige Funktion oder Datei zu finden, ist nach einer spezifischen CSS ID oder Klasse in dem zu ändernden HTML Element zu suchen. Oder nach einem anderen eindeutigen Text den das Modul ausgibt.
Eine andere Methode ist die Theme Developer Funktionalität des Devel Moduls zu benutzen.
Manche Module arbeiten mit Template-Datei Vorschlägen. Views 2 z.B. zeigt Theme Informationen beim Editieren einer View -- man kann sehen welche Templates für die Ausgabe benutzt werden.
Die erste in der Liste ist jeweils ein Template aus dem "themes"-Ordner im Modulverzeichnis. Dieses Template willst du überschreiben.
Die anderen Namen in der Liste sind Vorschläge zum Benennen der Datei wenn du sie in dein Theme Verzeichnis kopierst abhängig davon wie spezifisch du beim Überschreiben der Ausgabe sein willst (sollen z.B. deine Änderungen für alle views gelten oder nur für eine spezielle?)
Du kannst auch Vorschläge benutzen um die Ausgabe der Core Module zu überschreiben. Wenn du z.B. die Ausgabe eines bestimmten Inhaltstypen verändern möchtest kannst du die node.tpl.php kopieren und speichern als node-dein_inhaltstyp.tpl.php. Dort kannst du deine Änderungen dann vornehmen.
Mehr Informationen hierzu findest du im Abschnitt Core templates and suggestions
Wenn du die richtige Funktion oder Datei zum Überschreiben gefunden hast folge den Anweisungen der nächsten Abschnitte.
Falls der Ursprung einer zu ändernden HTML Ausgabe sich nicht innerhalb einer Theme Funktion, einer Präprozessor Funktion oder einer Template-Datei befindet wirst du auf der Theme Ebene alleine nicht weiter kommen. Vielleicht findest du die Lösung im Forum oder nimm Kontakt zum Maintainer des Moduls auf.
Überschreiben einer Theme- oder Präprozessor Funktion
- Öffne die template.php deines Themes in einem Texteditor.
- Kopiere die originale Funktion dort hinein. (Eine Funktionsreferenz findest du unter http://api.drupal.org. oder im Menu des Devel Moduls).
- Benenne die kopierte Funktion um (siehe Anmerkung unten). Ist die Basis-Präfix deines Theme "supermario" und die zu überschreibende Funktion heisst "theme_xyz", musst du die kopierte Funktion "supermario_xyz" nennen. Wenn du die Funktion "template_preprocess_xyz" überschreiben willst, nenn sie "supermario_preprocess_xyz".
- Modifiziere die Funktion nach deinen Wünschen.
- Speichere die template.php im Verzeichnis deines aktiven Themes.
- Aktualisiere den Theme Cache(see http://drupal.org/node/173880#theme-registry).
Anmerkung: Um den Namen einer Funktion zu ändern z.B. von theme_xyz zu supermario_xyz, finde eine Zeile die ungefähr so aussieht:
<?php
function theme_xyz( $a, $b, $c) {
?>
und ändere sie in:
<?php
function supermario_xyz( $a, $b, $c) {
?>
Ändere nicht die Parameter innerhalb der runden Klammern!
Überschreiben einer Template Datei
- Kopiere die Template Datei in deinen Theme-Ordner sofern sie dort noch nicht vorhanden ist.
- Wenn du einem Namensvorschlag folgst benenne die Datei entsprechend. Beachte dass manche der so benannten Dateien nicht berücksichtigt werden ohne die zugehörige Basisdatei -- z.B. braucht node-dein_inhaltstyp.tpl.php zwingend die node.tpl.php
Für Views-Vorschläge gilt das allerdings nicht, hier müssen sich die Basis-Templates nicht im Theme-Ordner befinden. - Verändere die Datei nach deinen Wünschen.
- Speichere die Datei und falls nötig die dazugehörigen in deinem Theme-Ordner.
- Aktualisiere den Theme Cache (see http://drupal.org/node/173880#theme-registry)
- Anmelden oder Registrieren um Kommentare zu schreiben
Neue Kommentare
vor 2 Tagen 4 Stunden
vor 3 Tagen 22 Stunden
vor 3 Tagen 23 Stunden
vor 4 Tagen 3 Stunden
vor 4 Tagen 10 Stunden
vor 5 Tagen 23 Stunden
vor 1 Woche 1 Stunde
vor 1 Woche 3 Stunden
vor 1 Woche 3 Tagen
vor 1 Woche 3 Tagen