• hooks
  • pantey

hook_menu();

01.10.2012

Итак, собственно вот мы и добрались до изучения "хуков" в Drupal. Хуки мы используем при написании своих модулей. Конкретный пример будет продемонстрирован на хуке:

  1. hook_menu();

который позволяет нам создавать собственные страницы из модуля.

Принцип построения модуля, можно прочитать вот здесь, я на этом не буду останавливаться.Мой модуль будет называться my_drupalfly

Открываем файл:

  1. Название_модуля.info

И записываем уже знакомые нам значения, что каждое из них обозначает читаем по ссылке выше

  1. name = my_drupalfly
  2. description = my_modul_for_drupalfly
  3. package = other
  4. core = 7.x
  5. version = "7.x-1.1"
  6. core = "7.x"

Теперь займемся самим хуком. Открываем файл:

  1. Название_модуля.module

И запишем вот такую конструкцию, не забывайте только вместо моего названия модуля - менять на своё

  1. /**
  2. * implements hook_menu() //комментарий, что используем hook_menu
  3. */
  4.  
  5. function my_drupalfly_menu(){ //вместо hook, пишем название своего модуля - это и будет название функции
  6. $items = array(); //данный хук содержит в себе массив
  7.  
  8. $items['my-page'] = array( //объявили путь нашей странице и загружаем данные в массив
  9.  
  10. 'title' => 'my_page', //хук содержит в себе заголовок
  11. 'page callback' => 'my_first_page', // объявили функцию обратного вызова
  12. 'access callback' => TRUE // разрешили всем пользователям просматривать данную страницу
  13.  
  14. );
  15.  
  16. return $items; // вернули переменную, которая содержит в себе массив с данными
  17. }
  18.  
  19. /**
  20. *function my_first_page //комментарий, что вызываем здесь функцию обратного вызова
  21. */
  22.  
  23. function my_first_page() {
  24. return t('Это первая страница созданная моим модулем Drupalfly'); //вывели текст на страницу, с возможностью перевода из админки сайта
  25. }

Из комментариев, думаю ясно, что откуда берется и для чего. Замечу только, что когда мы вызывали функцию:

  1. my_first_page();

то вывод текста мы завернули в скобки и перед ними поставили букву "t", данная запись будет говорить Drupal, что данный текст возможно использовать через "перевод интерфейсов", это очень удобно если допустим мы вместо русского текста, впишем сюда английский, то мы сможем заняться его переводом из админки сайта, не копаясь в конструкции модуля.

Результат работы данного хука:

Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (1)

Profile picture for user Николай
Юрий
02.09.2014

Как вывести определенный блок при клике, через аякс?
Задача точно такая же drupal.ru/node/107551

блок сделан через views
/admin/structure/block/manage/views/landing-block_1
Подскажите, пожалуйста!