Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Benutzerhandbuch › Entwicklung von Modulen und Themes › Theme Handbuch (Drupal 6) › Festlegen der Theme Komponenten und Einstellungen › Einstellungen auf der Administrationsseite verfügbar machen ›

Erweiterte Theme Einstellungen

Eingetragen von trixn (62) am 23.03.2009 - 21:55 Uhr

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:

  1. Fügen Sie in der Datei template-settings.php den Variablen $defaults und $form die neuen Einstellungen hinzu
  2. Fügen Sie die Einstellungen in der Datei template.php der Variablen $defaults im Code zur Initialisierung der Theme-Einstellungen hinzu
  3. 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.

‹ Color-Modul hinzufügen nach oben Inhalte an Regionen binden. ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Tag 9 Stunden
  • Hey danke
    vor 2 Tagen 4 Stunden
  • Update: jetzt gibt's ein
    vor 2 Tagen 22 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 8 Stunden
  • Da scheint die Terminologie
    vor 1 Woche 11 Stunden
  • Kannst doch auch alles direkt
    vor 1 Woche 4 Tagen
  • In der entsprechenden View
    vor 1 Woche 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 4 Tagen
  • gelöst
    vor 4 Wochen 1 Tag
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 21 Gäste online.

DrupalCenter durchsuchen:

Benutzerhandbuch

  • FAQ - Häufig gestellte Fragen.
  • Links & Downloads
  • Über Drupalcenter.de und das deutschsprachige Benutzerhandbuch
  • Über Drupal
  • Einsteiger
  • Fortgeschrittene
  • Entwicklung von Modulen und Themes
    • Das Drupal Theme System (PHPTemplate)
    • Theme Handbuch (Drupal 6)
      • Drupal 5 Theming für Eilige
      • Drupal 6 Theming für Eilige
      • Arbeiten mit CSS
      • Einführung ins Theming
      • Festlegen der Theme Komponenten und Einstellungen
        • Anatomie eines Drupal 6 Themes
        • Den Theme Cache (Zwischenspeicher) leeren
        • Die Struktur von Sub-Themes und Vererbung.
        • Einstellungen auf der Administrationsseite verfügbar machen
          • Color-Modul hinzufügen
          • Erweiterte Theme Einstellungen
        • Inhalte an Regionen binden.
        • Standardwerte der .info Datei
        • Struktur der .info Datei
      • Themebare Ausgaben anpassen ('overriding')
    • 5.x Themes in 6.x konvertieren
    • Leitfaden zur Entwicklung von Modulen
    • Module zu Drupal CVS hinzufügen
    • Resourcen für den Theming-Ninja
  • Drupalcenters Community
  • Drupal 7 Video-Trainings (Deutsch)
  • Drupal-Testumgebung erstellen
  • Drupal 6 Module
  • Drupal 7 Module
  • Drupal Screencasts auf deutsch
  • Archiv

Das Copyright des deutschsprachigen Drupal-Benutzerhandbuches unterliegt den jeweiligen Autoren. Übersetzungen des englischsprachigen Drupal-Benutzerhandbuches unterliegen der Creative Commons License, Attribution-ShareAlike 2.0.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association