logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaring❗

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

❗Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll

Aanmaken van geavanceerde thema-instellingen

01/10/2025, by Ivan

In het administratiegedeelte van Drupal heeft elk thema zijn eigen instellingenpagina op admin/Appearance/Settings/themeName. Deze pagina bevat een formulier met standaardinstellingen zoals “Logo-instellingen” en “Favicon-instellingen”.

In Drupal 8 kunnen thema’s het volledige formulier met thema-instellingen aanpassen door een PHP-functie toe te voegen in het bestand THEMENAME.theme of in het bestand theme-settings.php. In een van deze bestanden moet het thema gebruikmaken van de functie THEMENAME_form_system_theme_settings_alter(&$form, $form_state). Zie «Form API in Drupal 8» en de volledige lijst van Form en render elementen, evenals de documentatie van hook_form_FORM_ID_alter(), om meer te leren over de volledige flexibiliteit van de Form API.

Hier is een voorbeeld: stel dat je een thema “foo” hebt en je wilt een tekstveld toevoegen met de standaardwaarde “blue bikeshed”. Voeg het volgende toe in het bestand foo/foo.theme of foo/theme-settings.php:

function foo_form_system_theme_settings_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id = NULL) {
  // Work-around voor een core bug die admin-thema’s beïnvloedt. Zie 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("Plaats deze tekst in de widget-ruimte op je site."),
  );
}

Om een standaardwaarde in te stellen voor elk toegevoegd formulierelement, moet je een config/install/THEME.settings.yml bestand toevoegen met een eenvoudige regel: SETTING_NAME: DEFAULT_VALUE. Voor ons foo-thema moet je het bestand foo/config/install/foo.settings.yml bewerken en de volgende regel toevoegen:

foo_example: blue bikeshed

In elk van de PHP-bestanden van je thema kun je de door de gebruiker ingestelde waarde ophalen met:

$foo_example = theme_get_setting('foo_example');

Let op: themabouwers kunnen complexe dynamische formulieren maken met behulp van de geavanceerde Form API (autocomplete, inklapbare fieldsets).

Instellingswaarden gebruiken in je themabestanden

Om een parameter in een Twig-bestand te gebruiken, moet je een nieuwe variabele aan het Twig-bestand toevoegen via een preprocess-functie in het bestand THEMENAME.theme

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

Bijvoorbeeld, om onze foo_example-parameter toe te voegen aan het bestand node.html.twig, voeg je het volgende toe aan foo.theme:

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

Daarna kun je in node.html.twig toegang krijgen tot foo_example zoals bij elke gewone Twig-variabele:

{{foo_example}}

Meer informatie

Zie de change record voor Drupal 8: https://www.drupal.org/node/2382645