Як написати модуль для друпал-частина 2, хуки
Як написати модуль для друпал-частина 2, хуки
Продовжую серію статей, про те, як написати модуль для друпала, у цій статті йтиметься про хуки. Погуглив "що таке hook", знаходив статті, де хуки пояснювалися як магічні портали і як поріг входження в друпал, на практиці виявилося, що є 251 хук ядра друпала і функція module_hook, яка сканує модулі на наявність префіксів функцій, за якими можна додавати код своєї функції в ядро друпала чи інші модулі.
Відбувається це так:
- Функція до якої можна додати свій код повинна мати префіксhook_, щоб заборонити використовувати функцію іншими модулями треба на початку функції вставити_ (знак нижнього підкреслення).
- Щоб вставити свій код в іншу функцію, треба замістьhook написати назву свого модуля, наприклад дляhook _help() требаmymodule _help(), деmymodule назва модуля.
- Потім функція module_hook() визначає, чи був реалізований хук в модулі, якщо повертається значення TRUE, то задіюється API завантаження та взаємодії модулів
Приклад 1, як програмно створити блок, використовуючи хуки.
Є в друпал модуль block, в api якого є 8 хуків, нам для простого блоку знадобляться 2 хука, hook_block_info і hook_block_view
У лістингу хуків бачимо наступний приклад коду:
Трохи переписавши код, отримуємо такий вміст файлуmymodule.module :
На сторінці налаштування блоків (admin/structure/block) бачимо наші 2 створені блоки.
Вказавши для них Sidebar first і натиснувши зберегти, бачимо наші 2 створені блоки у першому сайдбарі.

Приклад 2, як програмно створити сторінку, використовуючи хуки.
Для створення сторінки потрібно використовуватиhook_menu(), на сторінці з описом модуля бачимо лістинг:
Трохи переписавши код із прикладу отримуємо: