Создание модуля Drupal
Начинать создание модуля следует с выбора имени. Пусть наш будущий модуль называется "Demo". Теперь нужно создать директорию с названием нашего модуля в подкаталоге sites / all / modules. Здесь должны располагаться все модули, кроме модулей ядра Drupal. Они располагаются в каталоге modules. Это делается для упрощения процесса сопровождения сайта. Также можно использовать подкаталог sites / example.ru / modules (где example.ru — имя нашего сайта) для хранения модулей при многосайтовой установке Drupal. Такие модули будут относится только к указанному домену. В директории all будут располагаться модули, которые относятся ко всем сайтам.
Любой модуль Drupal должен состоять из директории модуля и файлов модуля расположенных в ней. Итак, создадим подкаталог sites / all / modules / demo. Замечательно! Теперь нам требуется создать файл, который будет сообщать системе информацию о нашем модуле. Этот файл должен называться demo.info, где demo — название нашего модуля. Содержимое файла demo.info:
name = Demo
description = Простейший модуль Drupal 7.
package = Example modules
core = 7.x
Данный файл содержит строки, определяющие ключ и его значение. Начинается файл с определения имени модуля и его описания. Эти данные отражаются на странице управления модулями. Определяем группу для нашего модуля. Таким образом наш модуль окажется в группе Example modules. Этот параметр можно не указывать. В этом случае модуль будет располагаться в группе Other. В завершении указываем версию Drupal, с которой совместим наш модуль.
Мы объявили наш модуль. Переходим его созданию. Для этого создадим файл demo.module. В этом файле мы опишем функции для реализации нашего функционала. Об этом чуть позже…
Реализация хуков
В системе Drupal для переопределения её функциональности существует сеть ловушек или перехватчиков. Мы с вами будет назвать их хуки. Это название происходит от английского слова hook. В официальной документации описано множество таких хуков. Например, пользователю по запросу формируется меню. Для его переопределения в документации представлен hook_menu. Для его переопределения нам необходимо описать функцию demo_menu. Как вы заметили вместо hook нужно указать имя нашего модуля. Содержимое файла demo.module:
<?php
/**
* hook_menu
*/
function demo_menu() {
$items['demo'] = array(
'title' => 'Demo',
'page callback' => 'demo_page',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
function demo_page() {
return "Привет, мир!";
}
В данном примере мы создаем пункт меню Demo. За структуру меню отвечают ключи массива, который мы должны вернуть в качестве результата выполнения нашей функции для переопределения hook_menu. Указываем заголовок новой страницы. Затем устанавливаем функцию, которая будет отвечать за наполнения нашей страницы. Эта функция реализована ниже. Она просто выводит фразу "Привет, мир!". Нужно также определить права доступа к нашему пункту меню. Берём значение из стандартных прав доступа.
В завершении нужно включить наш новый модуль и в адресной строке браузера указать путь к нашей странице. Всё! Мы написали наш первый простейший модуль.