Огляд хуків, застосування їх своїх модулів

Опубліковано 2012.04.15 у розділі Drupal

У CMF Drupal передбачено роботу з подіями. Для цього використовуються хуки. Кожен хук прив'язаний до своєї події. Використовуючи хуки, можна прив'язатися до будь-якої події.

Використовувати хуки можна у модулях.Хук - це функція з ім'ям _

Наприклад, щоб використовуватиhook_menu у модуліtest_module – необхідно створити функцію з ім'ямtest_module_menu,hook_permissiontest_module_permission і т.д. Викликати хуки не потрібно - вони самі відпрацюються коли треба.

Найпоширеніший хук - це hook_menu. Він використовується для створення сторінок/меню. Всі ці сторінки вбудуються в меню.

Давайте створимо кілька різних сторінок і подивимося як вони працюють.

Для роботи з хуком будемо використовувати наш перший модульtest_module.

На цей раз ми додали новий елемент -accessarguments. Це масив правил, які мають бути дозволені у ролі користувача, який намагається відкрити сторінку. Також аргументtype імен значенняMENU_LOCAL_TASK. Це говорить про те, що сторінку буде відображено у вигляді вкладки.

Фразу «Зміст сторінки» повертає функціяnew_function. Наводити її код ми не будемо.

Також щоб працювало правило доступу - потрібно використовувати в модуліhook _permission

Такий код додасть наступний рядок до інтерфейсу системи.

А щоб використовувати аргументи в «каллбічній» функції – їх потрібно передати цій функції звичайними аргументами. Ім'я аргументу може бути будь-яким.

Давайте виведемо на цій сторінці часовий пояс користувача. Функцієюuser_load завантажимо об'єкт користувача та виведемо потрібну намінформацію.

Якщо ви все зробили правильно - побачите приблизно наступне.

хуків

Тепер давайте змінимо стандартну форму Друпала, тобто змінимо функціональність ядра, не чіпаючи саме ядро. Додамо до форми реєстрації можливість запровадити промо код.

Нам буде потрібноhook_form_alter.

Якщо ідентифікатор форми дорівнює user_register_form – додаємо поле для промо коду.

огляд

Як бачите – поле успішно додано.

Тепер напишемо обробник. Використовуємоhook_user_insert.

Ми просто відобразимо повідомлення про використання коду промо.

Тепер спробуємо зареєструватись з промо кодом.

огляд

Після реєстрації подивимося лог Друпала.

огляд

Замість запису в балку можна було б додати користувачеві якусь роль, відправити e-mail або щось інше.

Список хуків можна переглянути тутhttp://api.drupal.org/api/drupal/includes!module.inc/group/hooks/7

2 Коментарів
Гість 2013/08/06

Привіт! Дякую за подаровані хороші емоції