Hook-երի ըմբռնում
Hook-երը հանդիսանում են այն մեթոդներից մեկը, որոնց միջոցով մոդուլները համագործակցում են Drupal-ի միջուկի կամ ավելացված մոդուլների հետ։ Hook-երը օգտագործվում են տարբեր խնդիրների համար, այդ թվում՝ նախապատրաստման փոփոխականներ շաբլոնային ֆայլերի համար (hook_preprocess()), տեղեկությունների ցուցակների փոփոխություն (hook_tokens_alter(), hook_views_data_alter()) և ձևերի մանիպուլյացիա (hook_form_alter()) և այլ։ Այս էջում նշված են բոլոր hook-երը, որոնք տրամադրվում են միջուկի կողմից։
Մոդուլները կարող են սահմանել իրենց հավելյալ hook-երը։ Օրինակ՝ Flag մոդուլը սահմանում է hook_flag_options_alter(), որը կարող են օգտագործել այն մոդուլները, որոնք ցանկանում են փոխել արդեն գոյություն ունեցող դեֆոլտ դրոշակների պարամետրերը։ Շատ մոդուլներ, որոնք սահմանում են hook-եր, նաև տրամադրում են դրանց մասին փաստաթղթեր *.api.php ֆայլերում։
Hook-երը կատարվում են կատարման հոսքի տարբեր փուլերում, որտեղ Drupal-ը փնտրում է բոլոր ակտիվացված մոդուլներից ստացված ներդրումները։ Օրինակ՝ երբ օգտատերը այցելում է օգնության էջ Drupal կայքում, Drupal-ը տալիս է յուրաքանչյուր մոդուլի հնարավորություն ներկայացնելու իր օգնության փաստաթուղթը՝ որոնելով բոլոր ակտիվացված մոդուլներում hook_help() ֆունկցիայի իրականացումը։ Դա նշանակում է, որ կա, օրինակ, mymodule_help($route_name, \Drupal\Core\Routing\RouteMatchInterface $route_match) ֆունկցիա, որտեղ «mymodule»-ը մոդուլի անունն է։ Օրինակ՝ բլոկի օգնության hook-ը կոչվում է block_help(), իսկ նոդի օգնության hook-ը՝ node_help(): Hook-ը կարող է ունենալ պարամետրեր՝ $route_name և $route_match, որոնք թույլ են տալիս մշակողին որոշել, թե որ էջում կամ էջերում պետք է ցուցադրվի օգնության հաղորդագրությունը։
Hook-ը կարելի է դիտարկել որպես իրադարձությունների լսող (listener) այս իմաստով, որ իրադարձությունը սրում է գործողությունը։ Օրինակ, Drupal-ում իրադարձությունը՝ նոդի ջնջումն է, որը կհանգեցնի hook_node_delete ֆունկցիայի գործարկմանը։ Եթե ձեր մոդուլում իրականացված է hook_node_delete, ապա այն կգործարկվի նոդի ջնջման ժամանակ։ Օրինակ, ձեր ֆունկցիան կարող է հաշվել բոլոր նոդերի քանակը, ու երբ նոդ ջնջվի, ձեր ֆունկցիան կգործարկվի և կկրճատի այդ թիվը 1-ով։
Դիտեք նաև մոդուլների hook-երի ակնարկը Drupal API-ի ուղեցույցում։ Հնարավոր է ցանկանաք նաև ծանոթանալ այս օգտակար հոդվածին, որտեղ պարզաբանվում է, թե ինչպես է աշխատում Drupal մոդուլների / hook-երի համակարգը՝ օգտագործելով պարզ PHP կառուցվածքներ / կոդեր։
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.