Ustawienia motywu po stronie administracyjnej

Ustawienia administracyjne motywu

Każdy motyw ma swoje ustawienia w admin/appearance/settings/nazwa_motywu.
Standardowo w tym formularzu są dostępne ustawiania logo i favicony.

Dodając plik ustawień można owy formularz modyfikować.

Modyfikacji można dokonywać w dwóch lokalizacjach:

Aby ustawić domyślną wartość dla elementów formularza trzeba dodać w pliku /themes/nazwa_motywu/config/install/nazwa_motywu.settings.yml

zmienna: wartość

a następnie użyć jej w ustawieniach, w pliku theme-settings.php poprzez wywołanie theme_get_setting('zmienna');

Dodanie pola input typu text w ustawieniach motywu

function nazwa_motywu_form_system_theme_settings_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id = NULL)
  {
    if (isset($form_id)) {
      return;
  }
  
  $form['dodatek'] = array(
    '#type'          => 'textfield',
    '#title'         => 'etykieta pola',
    '#default_value' => theme_get_setting('zmienna'),
    '#description'   => t("Opis pod dodatkowym polem"),
  );
}

Pobranie wartości zmiennej z pliku ustawień i użycie w szablonach Twig

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

w pliku nazwa_motywu.theme

function nazwa_motywu_preprocess_node(&$variables) 
{
  $variables['dodatek'] = theme_get_setting('zmienna');
}

a w pliku node.html.twig

{{ dodatek }}

Ważne

1. Aktualizacja zmian ustawień

Edytowanie pliku *.settings.yml gdy motyw jest zainstalowany i próba zastosowania zmian nie działa. Plik ten jest wczytywany na początku instalacji - późniejsze zmiany w nim nic nie wnoszą dopóki się nie zainstaluje motywu od nowa.

Rozwiązania:

  • odinstalowanie i zainstalowanie motywu ponownie zaktualizuje zmiany w pliku ustawień - układ bloków się wypierdoli
  • zainstalowanie "nowej" wersji motywu ze zaktualizowaną listą pliku
  • synchronizacja w /admin/config/development/configuration.
    Import/export pojedynczych elementów, typ konfiguracji: Prosta konfiguracja
    Działania w import/export nie zmienią niczego w samym pliku *.settings.yml, ale lista zmiennych będzie dostępna

2. Przestarzała funkcja theme_get_setting ()

Funkcja theme_get_setting () jest już przestarzała.
Więcej: https://www.drupal.org/node/3035289

Kategoria