Создание модуля Drupal

Опубликовано 2011.12.12

Очень часто начинающие друпалеры задают один и тот же вопрос-как создать таб(или вкладку,кому как нравится). Или ещё что-нибудь несложное. Более опытные пользователи предлагают им набор модулей. Или же написать свой модуль. В этом нет ничего сверхсложного, но многие тем не менее не могут это переварить. В этой статье я расскажу как написать модуль с минимальными затратами, используя только самое главное, без чего не обойтись по определению,отбросив всё более-менее сложное. В конце статьи лежит прямая ссылка на исходники.Пожалуйста качайте, изучайте, задавайте свои вопросы. Написать свой модуль не так сложно. Необходимы хоть какие то знания php, хотя бы синтаксис и понимание Drupal API. Почти в каждом модуле используется hook_menu , для создания страниц на сайте.hook_permission позволит установить уровень доступа к вашим страницам. Это минимум. Как использовать эти хуки? В каждом хуке необходимо изменить слово hook на название вашего модуля. Таким образом вы получите название функции,которая сработает в том или ином случае(в зависимости от того какой хук вы используете). Назовем наш модуль test. Тогда в файле этого модуля напишем функцию test_menu. Эта функция должна возвратить элементы меню(адреса страниц). Например:
  1. function test_menu(){
  2. $items['my_custom_url']=array(
  3. 'title' => t('Заголовок страницы'),
  4. 'description' => t('Эта страница скрыта от посторонних.'),
  5. 'page callback' => 'first_test_custom_page',
  6. 'access arguments' => array('access test module'),
  7. 'type' => MENU_NORMAL_ITEM,
  8. );
  9. return $items;
  10. }
Кто знаком с php-понимают что это обыкновенный массив. my_custom_url - адрес нашей страницы. title - заголовок страницы description - описание page callback - функция,которая будет вызвана при открытии этой страницы access arguments - аргумент, необходимый для определения уровня доступа к странице type - тип страницы Функция для установки прав будет выглядеть так:
  1. function test_permission() {
  2. return array(
  3. 'access test module' => array(
  4. 'title' => t('Access my test module'),
  5. 'description' => t('Доступ к первой кастомной странице моего модуля')
  6. ),
  7. );
  8. }
И наконец функция вывода самой страницы: Внимание,эта функция уже не является хуком и начинаться она может как угодно.
  1. function first_test_custom_page(){
  2. return 'Содержимое страницы';
  3. }
Помещаем эти три функции в файл test.module Также создаем файл test.info - он необходим друпалу для распознания модуля. В дальнейшие подробности я вдаваться не стану-качайте исходники-там всё более подробно о создании табов и всего прочего, но ничего лишнего;)