Полезные хуки для Drupal 7

Иногда для решения определенных задач на drupal-сайте, требуется изменить поведение каких-либо функций. Вмешиваться в код модулей и ядра - дурное дело, хотя бы потому, что при любом обновлении все ваши изменения будут потеряны. Поэтому создается отдельный модуль для сайта, в котором и пишутся необходимые хуки.

Как сделать модуль

Это просто. Создаем папку с названием вашего модуля. Например mysite. Модуль, соответственно, будет называтьcя mysite.

Создаем три файла:

  • mysite.info
  • mysite.module
  • mysite.install

В mysite.info описываем наш модуль:

  1. name = mysite
  2. description = Hooks for mysite
  3. package = mysite
  4. version = 7.x
  5. core = 7.x

В mysite.install ничего не пишем, поскольку при включении, у нас ничего глобального не происходит (не создаются таблицы в базе данных, не создаются типы материалов, вьюсы и т.д.)

А в mysite.module уже пишем нужные нам хуки. Примеры ниже будут постепенно добавляться.

Отключить использование Overlay для конкретных страниц

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

mysite в названии функции - имя модуля.

  1. <?php
  2.  
  3.  /**
  4.  * Implements hook_admin_paths_alter().
  5.  */
  6.  
  7. function mysite_admin_paths_alter(&$paths) {
  8.   /* Выключаем overlay для страниц редактирования пользователей, добавления и редактирования нод */
  9.   $paths['node/user/*/edit'] = FALSE;
  10.   $paths['node/*/edit'] = FALSE;
  11.   $paths['node/add'] = FALSE;
  12.   $paths['node/add/*'] = FALSE;
  13.   /* Включаем overlay для страниц авторизаци, регистрации и восстановления пароля */
  14.   $paths['user'] = TRUE;
  15.   $paths['user/login'] = TRUE;
  16.   paths['user/register'] = TRUE;
  17.   $paths['user/password'] = TRUE;
  18. }
  19. ?>

Включаем модуль, сбрасываем кеш, наслаждаемся результатом.

Рубрика: Learn DrupalОбязательно почитайте и эти статьи: