Kreiranje naprednih podešavanja teme
U Drupal administratorskom delu, svaka tema ima svoju posebnu stranicu za podešavanja na adresi admin/Appearance/Settings/nazivTeme. Ta stranica sadrži formu sa standardnim podešavanjima, kao što su „Podešavanja slike logotipa“ i „Podešavanja ikone prečice“.
U Drupalu 8, teme mogu menjati celu formu podešavanja teme dodavanjem PHP funkcije u fajl THEMENAME.theme ili u fajl theme-settings.php. U jednom od ovih fajlova tema treba da koristi funkciju hook THEMENAME_form_system_theme_settings_alter(&$form, $form_state). Pogledajte „API formi u Drupalu 8“ i kompletan spisak elemenata Form i renderovanja, kao i dokumentaciju hook_form_FORM_ID_alter() docs za kompletnu fleksibilnost API formi.
Evo primera: ako imate temu „foo“ i želite da dodate tekstualno polje sa podrazumevanom vrednošću „blue bikeshed“. Dodajte sledeće u fajl foo/foo.theme ili u fajl foo/theme-settings.php:
function foo_form_system_theme_settings_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id = NULL) {
// Zaobilaženje buga u jezgru koji utiče na administratorske teme. Pogledajte problem #943212.
if (isset($form_id)) {
return;
}
$form['foo_example'] = array(
'#type' => 'textfield',
'#title' => t('Widget'),
'#default_value' => theme_get_setting('foo_example'),
'#description' => t("Postavite ovaj tekst u widget na vašem sajtu."),
);
}
Da biste postavili podrazumevanu vrednost za bilo koji dodatni element forme, potrebno je da u fajl config/install/THEME.settings.yml unesete jednostavnu liniju: SETTING_NAME: DEFAULT_VALUE. Za našu temu foo, potrebno je da izmenite fajl foo/config/install/foo.settings.yml i dodate sledeću liniju:
foo_example: blue bikeshed
U bilo kom PHP fajlu vaše teme možete dobiti korisnički podešenu vrednost pozivom:
$foo_example = theme_get_setting('foo_example');
Imajte na umu da autori tema mogu praviti složene dinamičke forme koristeći napredni API formi (autopopunjavanje, sklopivi skupovi polja).
Dobijanje vrednosti podešavanja u fajlovima vaše teme
Da biste koristili podešavanje u Twig fajlu, morate dodati novu promenljivu u Twig fajl tako što ćete je dodati preko funkcije prethodne obrade u fajlu THEMENAME.theme.
$variables['varname'] = theme_get_setting('varname')
Na primer, da biste dodali naš parametar foo_example u fajl node.html.twig, dodajte ga u fajl foo.theme:
<?php
function foo_preprocess_node(&$variables) {
$variables['foo_example'] = theme_get_setting('foo_example');
}
Zatim u fajlu node.html.twig možete pristupiti foo_example kao bilo kojoj drugoj Twig promenljivoj:
{{ foo_example }}
Više informacija
Pogledajte zapis promena za Drupal 8: https://www.drupal.org/node/2382645