logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll

Erstellung erweiterter Theme-Einstellungen

19/06/2025, by Ivan

Im Drupal-Administrationsbereich hat jedes Theme seine eigene Einstellungsseite unter admin/Appearance/Settings/themeName. Diese Seite enthält ein Formular mit Standardoptionen wie „Logo-Bildeinstellungen“ und „Shortcut-Icon-Einstellungen“.

In Drupal 8 können Themes das gesamte Theme-Einstellungsformular anpassen, indem sie eine PHP-Funktion entweder in der Datei THEMENAME.theme oder in theme-settings.php hinzufügen. In einer dieser Dateien muss das Theme die Hook-Funktion THEMENAME_form_system_theme_settings_alter(&$form, $form_state) verwenden. Siehe „Form API in Drupal 8“ und die vollständige Liste der Form- und Render-Elemente sowie die Dokumentation zu hook_form_FORM_ID_alter() für die volle Flexibilität des Form-APIs.

Hier ein Beispiel: Wenn Sie ein Theme „foo“ haben und ein Textfeld mit dem Standardwert „blue bikeshed“ hinzufügen möchten, fügen Sie Folgendes in die Datei foo/foo.theme oder foo/theme-settings.php ein:

function foo_form_system_theme_settings_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id = NULL) {
  // Workaround für einen Core-Bug, der Admin-Themes betrifft. Siehe Issue #943212.
  if (isset($form_id)) {
    return;
  }

  $form['foo_example'] = array(
    '#type'          => 'textfield',
    '#title'         => t('Widget'),
    '#default_value' => theme_get_setting('foo_example'),
    '#description'   => t("Place this text in the widget spot on your site."),
  );
}

Um einen Standardwert für ein hinzugefügtes Formularelement zu setzen, müssen Sie in der Datei config/install/THEME.settings.yml eine einfache Zeile hinzufügen: SETTING_NAME: DEFAULT_VALUE. Für unser Theme foo bearbeiten Sie die Datei foo/config/install/foo.settings.yml und fügen folgende Zeile hinzu:

foo_example: blue bikeshed

In einer beliebigen PHP-Datei Ihres Themes können Sie den vom Nutzer gesetzten Wert mit folgendem Aufruf erhalten:

$foo_example = theme_get_setting('foo_example');

Beachten Sie, dass Theme-Autoren komplexe dynamische Formulare mit erweiterten Form-APIs (Autocomplete, zusammenklappbare Feldgruppen) erstellen können.

Abrufen von Einstellungwerten in Ihren Theme-Dateien

Um eine Einstellung in einer Twig-Datei zu verwenden, müssen Sie der Twig-Datei eine neue Variable hinzufügen, indem Sie diese in der Preprocess-Funktion in der Datei THEMENAME.theme verfügbar machen.

$variables['varname'] = theme_get_setting('varname')

Beispiel: Um unseren Parameter foo_example in node.html.twig zu verwenden, fügen Sie ihn in foo.theme hinzu:

<?php
function foo_preprocess_node(&$variables) {
  $variables['foo_example'] = theme_get_setting('foo_example');
}

Dann können Sie in node.html.twig auf foo_example wie auf jede normale Twig-Variable zugreifen:

{{ foo_example }}

Mehr Informationen

Siehe Change Record für Drupal 8: https://www.drupal.org/node/2382645

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.