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:
- /themes/nazwa_motywu/theme-settings.php - ustawienia ustawień motywu (najlepiej tu)
- /themes/nazwa_motywu/nazwa_motywu.theme - ustawienia motywu (tu też zadziała)
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