Вы здесь

Как программно отловить момент создания кастомного блока?

0

Приветствую, господа!

Возникла необходимость записать сообщение в dblog при добавлении пользователем кастомного блока.

посмотрел вот эти хуки, но они не срабатывают при использовании в своем модуле:
https://api.drupal.org/api/drupal/modules%21block%21block.api.php/7.x

Хотел найти нечто аналогичное хуку, вызываемому при добавлении комментария/ноды:

function hook_comment_insert($comment) {
      // здесь я делаю что мне нужно
}

и вообще, не уверен есть-ли такие хуки? Модуль Trigger необходимых событий не содержит. Или может надо писать в template.php?

В основном при гуглении block_hook, встречаются материалы о том как программно создать блок. Но мне нужно другое - блок создается вручную, и нужно перехватить и зарегистрировать это событие.

Версия Drupal: 
7.x
Категория: 
Block API
Вопрос задан 13.01.2017 - 21:48

Ответы

2
/**
 * Implements hook_form_FORM_ID_alter(): block_add_block_form.
 */
function hook_form_block_add_block_form_alter(&$form, &$form_state) {
  $form['#submit'][] = 'mysubmit';
}

/**
 * Submit callback.
 */
function mysubmit($form, &$form_state) {
  watchdog(...);
}
Ответ дан 13.01.2017 - 22:25
Аватар пользователя xandeadx
xandeadx
1440

Спасибо за подсказку, только рабочий хук содержит еще form:
hook_form_block_add_block_form_alter

итоговый код получился таким, вдруг кому пригодится пример:

 function mymodule_mysubmit($form, &$form_state) {
     global $user;
     watchdog('NEW BLOCK '.$form['settings']['info']['#value'], 'user '.$user->uid, NULL, WATCHDOG_WARNING);

     // для отладки
     dpm($form);
     dpm($form_state);
 }

 function mymodule_form_block_add_block_form_alter(&$form, &$form_state) {
     $form['#submit'][] = 'mymodule_mysubmit';
 }

шикарно, еще раз спасибо :)

собственно правильный ответ был здесь: http://xandeadx.ru/blog/drupal/381

Комментарий оставлен 14.01.2017 - 00:40