Як написати модуль для друпал-частина 2, хуки

Як написати модуль для друпал-частина 2, хуки

Продовжую серію статей, про те, як написати модуль для друпала, у цій статті йтиметься про хуки. Погуглив "що таке hook", знаходив статті, де хуки пояснювалися як магічні портали і як поріг входження в друпал, на практиці виявилося, що є 251 хук ядра друпала і функція module_hook, яка сканує модулі на наявність префіксів функцій, за якими можна додавати код своєї функції в ядро ​​друпала чи інші модулі.

Відбувається це так:

  1. Функція до якої можна додати свій код повинна мати префіксhook_, щоб заборонити використовувати функцію іншими модулями треба на початку функції вставити_ (знак нижнього підкреслення).
  2. Щоб вставити свій код в іншу функцію, треба замістьhook написати назву свого модуля, наприклад дляhook _help() требаmymodule _help(), деmymodule назва модуля.
  3. Потім функція 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(), на сторінці з описом модуля бачимо лістинг:

Трохи переписавши код із прикладу отримуємо: