Erweiterte Theme Einstellungen
In Drupals Administrationssektion hat jedes Theme seine eigene Seite für Eistellungen unter admin/build/themes/settings/themeName. Und diese Seite besitzt ein Formular mit Standardeinstellungen wie "Logo Image Settings" und "Shortcut Icon Settings".
Theme Autoren in Drupal 6 können diese Seite nun anpassen, indem sie dem Formular zusätzliche Einstellungen hinzufügen. In Drupal 5 müssen Theme Autoren und Benutzer zuerst das Modul Theme Settings API (5.x-2.1 oder später) installieren, um die unten beschriebene Methode zu nutzen.
Formular Widgets für benutzerdefinierte Theme Einstellungen hinzufügen
Erstellen Sie zuerst die Datei theme-settings.php in Ihrem Theme-Verzeichnis und fügen sie die Funktion themeName_settings() oder themeEngineName_settings() hinzu. Die Variante themeEngineName_settings() wird bevorzugt, da sie anderen erlaubt, leichter eigene Themederivate auf Basis Ihres Themes zu erstellen. Die Funktion sollte "Forms API" benutzen, um die zusätzlichen Formular Widgets zu erstellen.
Beispiel: Um dem Garland-Theme Einstellugen hinzuzufügen, würde die Funktion garland_settings() oder phptemplate_settings() der Datei theme-settings.php des Themes hinzugefügt werden müssen.
Hat ein Benutzer das Theme-Einstellungsformular vorher schon einmal gespeichert, dann werden die gespeicherten Werte der Funktion durch die Variable $saved_settings übergeben. Die dem Formular hinzuzufügenden Widgets solten in Form eines "Forms API"-Arrays zurückgegeben werden.
Die Kommentare der folgenden Datei erklären die Details:
<?php
// Ein Beispiel: Datei themes/garland/theme-settings.php
/**
* Implemetierung der Funktion THEMEHOOK_settings().
*
* @parameter $saved_settings
* array Ein Array mit gespeicherten Einstellungen für dieses Theme.
* @ausgabe
* array Ein Formular-Array.
*/
function phptemplate_settings($saved_settings) {
/*
* Die Standardwerte für die Theme Variablen. Stellen sie sicher, dass $defaults exakt dem $defaults in der
Datei template.php entspricht.
*/
$defaults = array(
'garland_happy' => 1,
'garland_shoes' => 0,
);
// Verbindet die gespeicherten Variablen und ihre Standardwerte
$settings = array_merge($defaults, $saved_settings);
// Erstellt die Formular Widgets mit "Forms API"
$form['garland_happy'] = array(
'#type' => 'checkbox',
'#title' => t('Get happy'),
'#default_value' => $settings['garland_happy'],
);
$form['garland_shoes'] = array(
'#type' => 'checkbox',
'#title' => t('Use ruby red slippers'),
'#default_value' => $settings['garland_shoes'],
);
// Ausgabe der zusätzlichen Formular-Widgets
return $form;
}
?>Beachten Sie, das Theme Autoren komplexe, dynamische Formulare mittels "advanced Forms API" (Auto-Vervollständigen, einklappbare Feldzusammenstellungen) und jQuery javaskript erstellen können.
Die Werte der Einstellungen in Ihre Theme-Datei aufnehmen
Um die Einstellungen in der template.php oder den .tpl.php Dateien des Themes abzufragen, beutzen Sie einfach die Funktion theme_get_setting('Variablenname'). Details finden Sie in der Drupal API : http://api.drupal.org/api/6/function/theme_get_setting
Beispiel:
<?php
$happy = theme_get_setting('garland_happy');
?>Standardwerte initialisieren
Da wir nicht sicher sein können, das der Benutzer jemals die Seite admin/build/themes/settings/themeName besucht, müssen wir sicherstellen, das die Standardwerte für unsere hizugefügten Einstellungen initialisiert werden.
Die Theme-Einstellungen werden nicht gesetzt bevor wir das Formular admin/build/themes/settings/themeName das erste mal abgeschickt haben. Also müssen wir in unserer template.php überprüfen, ob die Variablen bereits gesetzt sind oder nicht. Wenn sie noch noch nicht gesetzt wurden, müssen sie auf die Standardwerte gesetzt werden. Man erreicht das, indem man eine der Variablen abfragt und überprüft, ob sie NULL ist. Wenn sie tatsächlich NULL ist, speichert man die Standardwerte mit Hilfe der Funktion variable_set() und erzwigt die Erneuerung der Einstellugen in Drupals innerem mittels theme_get_setting('', TRUE).
Fügen Sie diesen Code im obersten Teil Ihrer Datei template.php hinzu:
<?php
/*
* Theme-Einstellungen initialisieren
*/
if (is_null(theme_get_setting('garland_happy'))) { // <-- diese Zeile ändern
global $theme_key;
/*
* Die Standardwerte für die Theme-Variablen. Stellen Sie sicher, dass $defaults exakt den
* $defaults in der Datei theme-settings.php entspricht.
*/
$defaults = array( // <-- ändern Sie dieses Array
'garland_happy' => 1,
'garland_shoes' => 0,
);
// Standardeinstellungen des Themes abfragen.
$settings = theme_get_settings($theme_key);
// Die toggle_node_info_ Variablen nicht speichern.
if (module_exists('node')) {
foreach (node_get_types() as $type => $name) {
unset($settings['toggle_node_info_' . $type]);
}
}
// Die Standardeinstellungen des Themes speichern.
variable_set(
str_replace('/', '_', 'theme_'. $theme_key .'_settings'),
array_merge($defaults, $settings)
);
// Erneuerug der Drupal internals erzwingen.
theme_get_setting('', TRUE);
}
?>Beachten Sie, dass der Variablenname "garland_happy" in der ersten Zeile der Codes hierüber durch den Variablennamen ihrer eigenen Theme-Einstellung ersetzt und das Array §defaults aus ihrer Datei theme-settings.php kopiert werden müsste.
Einer neuen Version Ihres Themes weitere benutzerdefinierte Einstellungen hinzufügen
Nachdem Sie die Version 1.0 Ihres Themes veröffentlicht haben, wollen sie der Version 2.0 vielleicht einige zusätzliche Einstellungen hinzufügen. Der Prozess ist hier größtenteils straight-forward. Seien Sie jedoch beim Initialisierungscode im dritten Schritt besonders achtsam:
- Fügen Sie in der Datei template-settings.php den Variablen $defaults und $form die neuen Einstellungen hinzu
- Fügen Sie die Einstellungen in der Datei template.php der Variablen $defaults im Code zur Initialisierung der Theme-Einstellungen hinzu
- Erneuern Sie den Initalisierungscode in der Datei template.php um die Existenz von einer Ihrer neuen Einstellungen zu überprüfen. Wenn Sie beispielsweise einige Einstellungen hizugefügt haben, unter denen auch die Einstellung garland_slippers ist, dann ändern Sie den Code zur Initialisierung der Theme-Einstellungen wie folgt:
if (is_null(theme_get_setting('garland_slippers'))) {
Dies soll sicherstellen, dass die Standards für ihre neuen benutzerdefinierten Einstellungen zu den gespeicherten Werten ihrer alten benutzerdefinierten Einstellungen hinzugefügt werden.
- Anmelden oder Registrieren um Kommentare zu schreiben

Neue Kommentare
vor 1 Tag 9 Stunden
vor 2 Tagen 4 Stunden
vor 2 Tagen 22 Stunden
vor 1 Woche 8 Stunden
vor 1 Woche 11 Stunden
vor 1 Woche 4 Tagen
vor 1 Woche 4 Tagen
vor 1 Woche 4 Tagen
vor 4 Wochen 1 Tag
vor 4 Wochen 2 Tagen