Թեմայի ընդլայնված կարգավորումների ստեղծում
Drupal ադմինիստրատիվ հատվածում յուրաքանչյուր թեմայի համար կա իր կարգավորումների էջը՝ հասցեով admin/Appearance/Settings/themeName։ Այդ էջը պարունակում է ֆորմա ստանդարտ կարգավորումներով, օրինակ՝ «Նշանաբանի պատկերակի կարգավորումներ» և «Կարճ հղման պատկերակի կարգավորումներ»։
Drupal 8-ում թեմաները կարող են փոփոխել ամբողջ թեմայի կարգավորումների ֆորման՝ ավելացնելով PHP ֆունկցիա կամ այն THEMENAME.theme ֆայլում, կամ theme-settings.php ֆայլում։ Այս ֆայլերից մեկում թեման պետք է օգտագործի հետևյալ միացնող ֆունկցիան՝ THEMENAME_form_system_theme_settings_alter(&$form, $form_state)։ Տեսեք «Drupal 8-ի ֆորմերի API» և Form և Render-ի ամբողջական ցուցակը՝ ինչպես նաև hook_form_FORM_ID_alter()» փաստաթուղթը՝ ֆորմերի API-ի ամբողջական ճկունությունը ուսումնասիրելու համար։
Ահա օրինակ, եթե ձեր թեման foo է և ցանկանում եք ավելացնել տեքստային դաշտ, որի նախնական արժեքը «blue bikeshed» է։ Ավելացրեք հետևյալը foo/foo.theme կամ foo/theme-settings.php ֆայլում.
function foo_form_system_theme_settings_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id = NULL) {
// Ծածկել ադմին-թեմաներին ազդող կորպուսի սխալը։ Տես #943212 խնդիր։
if (isset($form_id)) {
return;
}
$form['foo_example'] = array(
'#type' => 'textfield',
'#title' => t('Widget'),
'#default_value' => theme_get_setting('foo_example'),
'#description' => t("Տեքստը տեղադրեք ձեր կայքի վիջեթի հատվածում։"),
);
}
Ցանկացած նոր ավելացված ֆորմայի էլեմենտի նախնական արժեքը սահմանելու համար անհրաժեշտ է config/install/THEME.settings.yml ֆայլում ավելացնել պարզ տող՝ SETTING_NAME: DEFAULT_VALUE։ Մեր foo թեմայի համար պետք է խմբագրել foo/config/install/foo.settings.yml ֆայլը և ավելացնել հետևյալ տողը՝
foo_example: blue bikeshed
Թեմայի PHP ֆայլերից որևէ մեկում կարող եք օգտվողի տրված արժեքը ստանալ այսպես՝
$foo_example = theme_get_setting('foo_example');
Նշեք, որ թեմաների հեղինակները կարող են ստեղծել բարդ դինամիկ ֆորմաներ՝ օգտագործելով ընդլայնված ֆորմերի API (օրինակ՝ ավտոմատ լրացում, կոճակավոր դաշտերի հավաքածուներ)։
Կարգավորումների արժեքների ստացում ձեր թեմայի ֆայլերում
Twig ֆայլում պարամետրը օգտագործելու համար անհրաժեշտ է ավելացնել նոր փոփոխական Twig ֆայլում՝ այն ավելացնելով նախապատրաստման ֆունկցիայի միջոցով THEMENAME.theme ֆայլում։
$variables['varname'] = theme_get_setting('varname')
Օրինակ՝ foo_example պարամետրը ավելացնելու համար node.html.twig ֆայլում, ավելացրեք հետևյալը foo.theme ֆայլում՝
<?php
function foo_preprocess_node(&$variables) {
$variables['foo_example'] = theme_get_setting('foo_example');
}
Այնուհետև node.html.twig ֆայլում կարող եք սովորաբար Twig փոփոխականի նման օգտագործել foo_example-ը՝
{{ foo_example }}
Լրացուցիչ տեղեկատվություն
Տեսեք Drupal 8-ի փոփոխությունների գրառումը՝ https://www.drupal.org/node/2382645