Огляд хуків, застосування їх своїх модулів
Опубліковано 2012.04.15 у розділі Drupal
У CMF Drupal передбачено роботу з подіями. Для цього використовуються хуки. Кожен хук прив'язаний до своєї події. Використовуючи хуки, можна прив'язатися до будь-якої події.
Використовувати хуки можна у модулях.Хук - це функція з ім'ям _
Наприклад, щоб використовуватиhook_menu у модуліtest_module – необхідно створити функцію з ім'ямtest_module_menu,hook_permission –test_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
Привіт! Дякую за подаровані хороші емоції