Что такое hook?

Сложность: 
1

Много программистов-новичков, только начинающие работать с Друпал, не понимают сути самого понятия хук и большинство из них думает: “работает, значит не трогай”. Но давайте мы разберемся, что это такое и почему он важен, для работы с Друпалом.

Данный пост тяжело назвать статьей, это скорее всего заметка. Но, все же, мы уверены, что она будет полезна тем, кто хочет понять что такое хук в Друпале.

 Значение слова

Для начала, давайте разберемся что такое hook. В переводе с английского слово hook значит "крючок" (имя существительное) или же подцепить (глагол). Конечно же, такое название ему дано не зря, если вдуматься в это понятие, то оно как раз подходит по своей сути тому, что оно делает.

 Пример “на пальцах”

Давайте представим что у нас есть машина:

 Drupal hooks

Что же она из себя представляет? В ней нет ни стекол, нет фар, все стандартное, практически без вкуса, даже в салоне ничего нет. Грубо говоря, именно такой машиной можно считать только что установленный Друпал. Вроде бы все что нужно есть, машина поедет (если еще будет все необходимое для этого), но нет никаких плюшек.

Смотрим на следующее фото. Эту машину уже можно ассоциировать с Друпал-сайтом, на котором стоят специальные модули:

Drupal hooks

Обратите внимание на вторую машину, в ней есть фары, есть бампер, отличные тонированные стекла и зеркала бокового вида. Всего этого не было в первой машине. Вопрос идет в следующем, за счет чего мы ее улучшили? Если присмотреться к первой машине, оказывается все просто. В ней были оставлены специальные места, так называемые заготовки, для того чтоб можно было вставить все нужные детали, подточенные ("кастомизированные") специально под ее владельца. Таким образом эти заготовки, помогли нам сделать машину лучше.

Drupal hooks

 

Что мы имеем в Друпале?

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

 Пример хуков Друпал

Каждый хук идет как событие. К примеру hook_user_insert вызывается тогда, когда в системе создается новый пользователь. То есть у нас есть событие: создание пользователя. hook_init запускается всегда перед началом инициализации страницы, а вот hook_menu запускается каждый раз при очистки кеша и с его помощью можно внедрить в Друпал свои страницы.

Выводы

Хук - это "крючок", который разрешает внести изменения в работу ядра Друпала. Имейте ввиду, что изменять сам код ядра Друпал запрещено. Это влечет за собой изменение целостности системы, что не только утрудняет работу с сайтом в будущем, усложняет ее масштабирование, но и грозит вам багами, на которые вы будете убивать свое драгоценное время и, конечно же, вы уже больше никогда не сможете сделать нормальное обновление ядра.

Весь список хуков ядра можно увидеть здесь.

Создание блоков в Друпал 7 (работа с хуками hook_block_info и hook_block_view)

Пишем модуль Drupal 7, hook_menu

 

Рассказать друзьям: