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
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.