Как написать модуль для Друпала?

Изображение пользователя andyceo.

Введение в модули Друпала

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

Модуль Друпала просто представляет собой файл, содержащий набор процедур, написанных на PHP. Когда он используется, код модуля выполняется непосредственно в контексте сайта. Таким образом он может использовать все функции и все переменные и структуры данных основного ядра. Фактически, модуль сколько-нибудь не отличается от обычного PHP-файла: это больше идея, которая автоматически ведёт к хорошим архитектурным принципам и хорошей модели разработки. Модульность лучше всего сочетается с моделью разработки систем с открытыми исходными кодами, потому что иначе будет трудно представить как люди, работающие параллельно, не будут влиять друг на друга.

Идея заключается в том, чтобы иметь возможность запускать произвольный код в заданных местах движка. Этот произвольный код должен иметь возможность сделать то, что нужно для расширения функциональности. Места, где код должен быть выполнен, называются "хуками" (англ. "hook") и они жёстко определены и зафиксированы.

В тех местах, где доступны хуки, движок вызывает код каждого модуля, которые используют данный хук. Это сделано путём просмотра всей директории, где находятся модули. Скажем, ваш модуль называется foo (т.е. расположен в modules/foo.module) и если в нём есть хук под названием bar, движок вызовет функцию foo_bar(), если она присутствует в вашем модуле.

Таким образом, хуки позволяют модулю взаимодействовать с ядром Друпала. Система модулей Друпала основана на концепции хуков. Хук - это php-функция с названием (например) foo_bar(). Здесь foo - имя модуля (значит, полное имя модуля - foo.module), а bar - имя хука. Каждый хук имеет определённый набор параметров и определённый тип возвращаемой переменной. Для расширения возможностей Друпала модуль всего лишь должен предоставлять хуки. Когда Друпалу требуется функциональность модуля, движок определяет, какие модули предоставляют хуки, соответствующие данной ситуации. Найденные хуки вызываются во всех модулях, которые соответствующие хуки предоставили.

Урок "Создание модуля". Друпал 5.х

(оригинал в англ. версии находится здесь.)

Этот урок рассказывает, как создать модуль для Друпал версии 5. Это дополнение к уроку для Друпал версии 4.6. Вы можете уточнять различные детали там. Большинство в этом уроке верно и для Друпал версии 4.7, но всё же вы должны проверить документацию по API-функциям, также как и документацию "как обновить свои модули от одной версии Друпала к другой".

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

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

Этот урок требует от вас:

  • Базового знания PHP, включая синтаксис и концепцию объектов в PHP
  • Базового понимания таблиц баз данных, их полей, записей и синтаксиса языка SQL
  • Работающий экземпляр Друпала
  • Доступ к Друпалу с правами администратора
  • Доступ к веб-серверу

Этот урок не требует от вас какого-либо представления о внутренней работе модуля Друпала. Этот урок не научит вас писать модули для более ранних версий, чем Друпал 4.5.

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