Նախապատրաստում և հատկությունների փոփոխություն .theme ֆայլում
Ինչպես Drupal 7-ում, դուք կարող եք ազդել որոշակի HTML-ի արտածման վրա նախապատրաստման ֆունկցիաների միջոցով։ Օրինակ, եթե ցանկանում եք ավելացնել դաս մենյուին և նախընտրում եք դա անել PHP մակարդակով, կարող եք դա անել։ Սա լավ միջոց է թեմային առնչվող նշագրման փոփոխման համար, բայց եթե ցանկանում եք ստեղծել թեմայից անկախ նշագրում, ավելի լավ է գրել ձեր սեփական մոդուլը։
(Նշում․ այստեղ «mytheme»-ը ձեր թեմայի մեքենայական անունն է, օրինակ՝ «bartik»։)
Նախապատրաստման ֆունկցիաների հետ աշխատելու համար՝
1. Ստեղծեք կամ խմբագրեք ձեր թեմայի տոպրակին պատկանող mytheme.theme ֆայլը։
2. Ստեղծեք ֆունկցիա, օրինակ՝ mytheme_preprocess_HOOK, որտեղ HOOK-ը հղում է այն տարրի վրա, որը ցանկանում եք փոխել։*
3. Գրեք ձեր փոփոխությունները և պահպանեք։
4. Վերակառուցեք քեշը, որպեսզի փոփոխությունները կիրառվեն (եթե ունեք drush, ապա հրամանի տողում գործարկեք drush cr)
* HOOK անունները հետևում են twig տեմպլեյթի անվանման ձևին։ Օրինակ՝ page.html.twig-ի համար հուկը կլինի mytheme_preprocess_page։ Եթե ցանկանում եք հուկ գրել article.html.twig-ի համար, դա կլինի mytheme_preprocess_node__article (ծայրակետերը փոխարինվում են ստորակետերով)։ Հուկերի անունները պարզելու համար տեսեք «Տեմպլեյթի ֆայլերի որոնում՝ դեբագի միջոցով» բաժինը։
Ենթադրենք ցանկանում եք բոլոր մենյուներին ավելացնել my-menu դաս։ Եթե ձեր թեման mytheme է, ապա պետք է գրեք հետևյալ ֆունկցիան․
/** * hook_preprocess_HOOK() իրագործում menu.html.twig-ի համար։ */ function mytheme_preprocess_menu(&$variables) { // Եթե դասերի զանգված գոյություն չունի, ստեղծեք դատարկ զանգված։ if (!isset($variables['attributes']['class'])) { $variables['attributes']['class'] = []; } // Միացրեք այլ hook_preprocess_menu կանչերից եկած դասերին։ $variables['attributes']['class'] = array_merge($variables['attributes']['class'], ['my-menu']); }
Սա շատ նման է Drupal 7-ի և օգտակար է, եթե ցանկանում եք կառավարել կոնկրետ մենյուներ։
Կարող եք ստուգել $variables օբյեկտը՝ պայմանով, որպեսզի իմանաք, թե որ մենյուի հետ եք աշխատում։ $variables-ի ներսի տարրերը հասանելի են Twig-ում նախապատրաստումից հետո։
Հիմա մեր օրինակը զարգացնելու համար՝ ենթադրենք, որ ցանկանում եք գլխավոր մենյուին ավելացնել «my-main-menu» դասը։ Սա կլինի այդ ֆունկցիան․
/** * hook_preprocess_HOOK() իրագործում menu.html.twig-ի համար։ */ function mytheme_preprocess_menu(&$variables) { if ($variables['menu_name'] == 'main') { if (!isset($variables['attributes']['class'])) { $variables['attributes']['class'] = []; } $variables['attributes']['class'] = array_merge($variables['attributes']['class'], ['my-main-menu']); } }
Փոփոխություններ Drupal 7-ից
Այժմ template.php ֆայլ չկա։ Այն փոխարինվել է mytheme.theme-ով։ Այնուամենայնիվ, այն դեռ գործում է շատ նման ձևով՝ թույլ տալով հուկերին փոխել արտածումը։
Այլ օգտակար հղումներ
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.