О создании модулей в Drupal и их грамотной установке
Привет юным друпалерам! Этот пост предназначается именно вам, хотя и для разработчиков среднего звена тоже будет пару интересных моментов. После прочтения данного материала вы узнаете из чего состоят Drupal модули, как их правильно устанавливать и использовать.
Стандартный Drupal «из коробки» обладает, как правило, недостаточным набором функционала даже для захудалого сайта-визитки. Расширяется список возможностей установкой и настройкой уже готовых модулей либо же написанием собственных решений. Все модули советую скачивать с официального сайта Drupal.org, чтобы в один прекрасный день не обнаружить, что ваш сайт упал или, еще того хуже, его взломали.
Как установить модуль Drupal?
Для начала надо запомнить, что «зона» разработчика – это папка “sites”. Все остальные папки – это ядро Drupal, в которое лезть вообще не стоит, тем более, начинающим разработчикам. Если вам вдруг покажется, что решением всех проблем будет внесение правок в код ядра – откройте Drupal API и курите его до просветления сознания. Все, что касается дополнительных модулей, должно храниться в папке “sites/all/modules”.
Да, в админке Drupal имеется функция «Установить модуль», однако мне она никогда не нравилась – сейчас объясню почему. Если у вас серьезный проект, то вам, наверняка, помимо установки стандартных модулей придется патчить некоторые из них или же вообще писать собственные решения. Поэтому на своих проектах я взял за правило разделять все это скопление кода. Для этого в папке “sites/all/modules” создаем три подкаталога:
- contrib – для хранения стандартных (на сленге «контриб») модулей;
- patched – для хранения контриб модулей с примененными патчами;
- custom – для хранения собственных модулей.
Все, теперь остается вручную заливать модули в соответствующие папки и включать их в админке (“admin/modules”) – Drupal все найдет, не переживайте. Подобная архитектура упрощает совместную разработку, упрощает жизнь разработчику, которому, возможно, когда-то придется дорабатывать ваш проект. Вы же не хотите, чтобы вас вспоминали недобрым словом?
Структура модулей в Drupal
Любой модуль Drupal имеет строго заданную структуру и состоит, как минимум, из двух файлов:
- .info файл – содержит информацию о модуле;
- .module файл – содержит набор функций, реализующих требуемый функционал.
Помимо основного .module файла хорошим тоном считается создание дополнительных .inc файлов, что позволяет группировать отдельные наборы функций. Например, описание всех административных форм и функций, как правило, выносится в .admin.inc файл. Описание своих функций темизации принято выносить в .theme.inc файл.
В серьезных модулях Drupal можно встретить .install файл, в котором описываются функции, срабатывающие в при инсталяции и деинсталяции. Также .install файл может содержать информацию о структуре таблицы базы данных, необходимой для работы модуля.
Структура .info файла
Первым файлом при создании любого модуля будет .info файл (module_name.info):
- name – название модуля;
- description – описание модуля;
- core – версия ветки Drupal;
- package – название группы, к которой относится данный модуль (опционально);
- dependencies – указание зависимости нашего модуля от других (опционально);
- configure – ссылка на страницу конфигурации модуля (опционально);
- files – указание списка дополнительных файлов, подгружаемых модулем (.module подключается автоматически).
- name = Angarsky module
- description = "Adds new features for Blog."
- package = Blog
- core = 7.x
-
- ; This requires Drupal 7.15 or newer.
- dependencies[] = system (>=7.15)
-
- ; CTools and Token are also required.
- dependencies[] = ctools
- dependencies[] = token
-
- configure = admin/config/angarsky
-
- files[] = angarsky_module.admin.inc
- files[] = angarsky_module.pages.inc
Структура .module файла
Сложно описать какую-то общую структуру .module файла, так как набор функций напрямую зависит от требуемого функционала. Поэтому я дам несколько рекомендаций по написанию кода:
- имплементацию хуков ставьте всегда выше описания остальных функций;
- пишите понятные комментарии, не только к функциям, но и участкам кода, где реализована сложная логика;
- соблюдайте стандарты кодирования (читаем о стандартах кодирования, доступно и по-русски);
- не ленитесь создавать дополнительные .inc файлы – в будущем будет проще ориентироваться в коде.
Собственно на этом вводная статья в модули и заканчивается. О том, что такое хуки и как расширять функционал коробочного Drupal, я расскажу в следующем посте.
Комментарии
Вопрос - А зачем ставить зависимость для модуля от версии Друпала больше 7.15?
Так и укажи, что это опцинально
Как указал для:
Зачем людей заводить в заблуждение.
Да и в общем, что бы модуль работал достаточно указать только 2-а пункта:
name, core
Все остальное опцинально и на усмотрение разработчика.
То есть все установленные модули с друпал.орг, которые размещаются по пути sites/all/modules можно перенести в отдельную папку contrib ?
А как правильно указать версию в core?
Я написал core = 7.x но у меня высвечивается сообщения об ошибке "Эта версия не совместима с Drupal 7.x и должна быть заменена."
Здравствуйте, у меня такая проблема. Установил модуль, и на сайте написано, что нужно его настроить через файл, который находится по адресу admin/config/services/elementor/settings. Но я не могу найти его, нет такого адреса. Что я делаю не так?
Добавить комментарий