Інші відповіді чудові, точні, детальні, але я не впевнений, що це "прості слова", що пояснюють голі кістки тієї концепції, яку шукав шукач.
Я вважаю гачки як точку, коли код призупиняється і кричить " Хтось ще має щось додати тут? ". Будь-який модуль може мати функцію, яка відповідає на це, і спрацьовує за допомогою відповідних даних, переданих йому в цей момент у коді.
Хороший прямий приклад - прикріп____________________________Dlete_ (2) . Будь-який модуль може використовувати його для того, щоб все відбувалося щоразу, коли вузол видаляється. Документи говорять вам, що цей гак передає модулю об'єкт цього видаленого вузла для роботи та окреслює іншу корисну інформацію, таку як точний термін, коли він викликається (наприклад, це перед тим, як дані вузла фактично видаляються з бази даних) , і де в коді Drupal закликається гачок (який може бути більше ніж на одному місці).
Ви можете дослідити, які гачки існують, і дізнатися, які дані передаються їм, досліджуючи речі, починаючи з "гачка_" в apip Drupal .
Гачки працюють за умовами імен: використовуючи hook_node_delete
в нашому прикладі, коли процес видалення вузла доходить до точки, де викликається гачок, для кожного модуля з такою функцією, [modulename]_node_delete()
коли слово гачок у назві гачка замінено на ім'я модуля (наприклад, my_amazing_module_node_delete()
), ці функції викликаються.
Чому? Таким чином, будь-який модуль може робити що завгодно у цих ключових моментах: наприклад, ви можете подивитися на видалений вузол і робити речі, якщо він відповідає певній умові (скажімо, надіслати електронну пошту адміністратору або запустити якийсь довгий процес).
Деякі гачки дозволяють змінювати речі, створені безпосередньо перед їх обробкою. Наприклад, hok_menu_alter () передає вам поточні пункти меню, які створила система. Будь-який модуль може визначити функцію some_modulename_menu_alter () та переглянути їх, необов'язково змінити їх (видалити деякі, додати деякі, сортувати їх ...) та повернути нещодавно змінене меню назад.
Це просто, по-справжньому потужно і лежить в основі того, як Drupal працює як модульна система. Реалізація гачків лежить в основі більшості модулів Drupal.
Переглядаючи код модуля Drupal, ви можете помітити, які функції походять від гачків (на відміну від функцій, які просто викликаються всередині самого коду модуля), оскільки спільнота Drupal застосовує конвенцію, згідно з якою кожна реалізація гака має коментар перед цим, як це (зверніть увагу на біт "Реалізація гачок _..."):
/**
* Implements hook_some_hook().
*
* Some descriptive summary of what this does
*/
function my_amazing_module_some_hook() {
Деякі модулі, які виконують функції API, визначають власні гачки. Наприклад, Перегляд визначає багато гачків, які дозволяють додавати, читати та редагувати дані в різних точках у процесі створення чи відображення подання. Ви можете знайти інформацію про гачки, створені в спеціальних модулях з двох місць (якщо припустимо, що модуль дотримується конвенцій тощо):
Як пояснили інші, завантажувальне завантаження - це в основному завантаження - я не буду дублювати інші хороші чіткі пояснення.