Создание модулей в Drupal: введение
Одно из главных преимуществ Drupal - возможность создания и подключения модулей, позволяющих расширить его функциональность. Основная идея использования модулей проста. В отличие например от Джумлы, в которой для расширения функциональности используется аж три вида модулей: компоненты, собственно модули и мамботы. Которые, к тому же обладают собственными установщиками, которые не всегда устанавливают как надо, то что должны устанавливать.
Модули в Drupal
Первое что нужно - придумать имя модуля. "Как вы лодку назовете так она и поплывет."
Все файлы модуля хранятся в каталоге с именем модуля. Именно поэтому имя модуля не должно содержать символов русского алфавита, пробелов и пр. Каталоги с системными модулями находятся в каталоге modules. Модули скачанные с drupal.org и собственноручно написанные модули лучше размещать по адресу sites/all/modules. Кроме файлов скриптов php, о которых поговорим ниже, в каталоге модуля могут быть файлы со стилями CSS, темами модуля и многое другое.
Необходимый же минимум сводится к двум файлам: имя_модуля.info - содержащего информацию о модуле: человеческое название - которое правда никому кроме администратора не показывается, описание модуля, версия Drupal - для которой разработан модуль и пр. и имя_модуля.module - содержащем код который и будет обеспечивать функциональность модуля.
Если необходимо выполнить какие-то подготовительные действия перед первым запуска модуля (при инсталяции модуля - как правило это создание таблиц в базе данных), или же завершить уборку системы после последнего - в случае деинсталяции модуля используется модуль имя_модуля.install.
Название и размещение модуля
Но а теперь перейдем от теории к практике. Сделаем самой простой в мире модуль для Drupal.
Заходим в каталог sites/all и ищем в нем каталог modules. Если вы в данном Drupal еще не устанавливали модулей - то его нужно сначала создать. В данном каталоге modules создайте каталог simplemodule и в нем два файла simplemodule.info и simplemodule.module.
Теперь осталось выяснить, что же нужно прописать в этих файлах.
info-файл
Файл info, как уже говорилось, содержит информацию о модуле. Формат файла повторяет формат конфигурационного файла php - php.ini, а по размерам - не больше 10 строк. Во всяком случае больше мне видеть не приходилось.
Для нашего модуля можно создать info-файл следующего содержания.
; $Id$
name = Simple Module
description = Tests Simple Module
package = tests
version = 1.0
core = 6.xС первой строкой ничего делать не надо: только правильно перепечатать. Если вы решите опубликовать свой модуль на http://www.drupal.org/modules/ то эта строка будет автоматически заменена на информацию о модуле и будет выглядеть примерно следующим образом.
; $Id: simplemodule.info,v 1.0 2008/10/10 06:10:23 $Если вы не собираесь размещать свой модуль на drupal.org - то эту строка не обязательна. Но лучше все-таки ее оставить. Потому-что эта строка как-никак элемент идеологии создания модулей для Drupal, а идеология это такая вещь - никогда не знаешь когда об нее споткнешься.
Вторая и третья строки - название и описание модулей. Предназначены для человека, точнее администратора сайта, и отображаются на странице списка модулей. Названия модулей можно писать как по английски, так и по русски, как без кавычек, так.и с ними. Например, возможна такая запись.
name = Простой модуль
description = "Tests Simple Module"На странице admin/build/modules, на которой отображается список модулей, все модули разбиты на группы. Например, всегда присутсвуют группы модулей идущих в комплекте с Drupal "Core - required" - "Ядро обязательное" и "Core - optional" - "Ядро - дополнительное". Параметр package как раз и определяет название группы в которой будет находиться модуль. Название группы это просто отображаемый на странице текст и его можно задавать как на русском, так и на английском языках. Но лучше конечно по английски, а в случае необходимости переводить на русский стандартными средствами Drupal на странице admin/build/translate/.
Параметр version задает версию модуля, а core - версию ядра Drupal необходимую для работы. Обычно имеет значение первая цифра и если модуль предназначен для Drupal 5-й версии пишут core = 5.x, для 6-й core = 6.x. Но можно установить и более точное значение. Например: core = 6.10. И данный модуль не будет работать под Drupal версии ниже 6.10. Зато когда вы дождетесь появления этой версии, он у вас прекрасно заработает. И будет работать также под версиями 6.11, 6.12 и т.д.
Если модулю для работы требуется другой модуль, то эти сведения указываются здесь же. Например, модулю translate требуется модуль locale и это указывается строкой:
dependencies[] = locale
а модулю forum аж два модуля taxonomy и comment, поэтому в нем и прописано:
dependencies[] = taxonomy
dependencies[] = comment В данном файле можно также указать версию PHP, которая необходима для работы модуля. Например:
php = 5.1Если вы опубликуете свой модуль на drupal.org он будет, то в него будут добавлены еще несколько строк, но это уже не ваша забота.
module-файл
В файле simplemodule.module находится код, обеспечивающий его функциональность. Пока что оставим в нем самый необходимый минимум.
<?php
// $Id$
/*
Дальше до конца файла код модуля
*/ Поскольку это самый обычный php-файл он начинается с <?php. Можно начинать и с <?. Но лучше все-таки начинать как положено. Идеология как я уже говорил - штука противная. кое-где short_open_tag стоит по умолчанию Off. Как например, на недавно свежеустановленном сервере AltLinux: который запросто запускал Drupal, но отказывался выполнять мой самописный скрипт из трех строк. Или например вам может повезти с хостером.
Дальше идет строка, $Id$ которая выполняет те же функции, что и соответствующая строка в info-файле.
И дальше, до конца файла, идут определения функций на php, реализующие функциональность модуля. Обратите внимание: в конце файла не нужно ставить привычный тег ?>. В Drupal он необязателен. Сделано это для уменьшения возможного количества ошибок. Если этот тег поставить, то после него можно случайно установить несколько символов (обычно пробелов, не оказывающих видимого влияния на результат вывода). Таким образом, вывод уже начался и может оказаться лишним: например если Drupal после этого вывода вдруг начнет формировать HTTP-заголовок страницы, что приведет к ошибке.

Комментарии:
А где продолжение???
Опубликовано Гость (не проверено) в Сб, 29/11/2008 - 17:42.А где продолжение???
Re: Создание модулей в Drupal: введение
Опубликовано vikeng в Вс, 30/11/2008 - 15:02.Продолжение здесь и здесь. Остальное пока в разработке. Если есть пожелания о чем упомянуть в первую очередь - пишите.
Re: Создание модулей в Drupal: введение
Опубликовано Avrilfan (не проверено) в Вс, 15/03/2009 - 16:01.Спасибо
Это единственная пока статья в которой всё так подробно написано о создание модулей .
)
Re: Создание модулей в Drupal: введение
Опубликовано Евгеней (не проверено) в Чт, 10/12/2009 - 04:55.неплохо было бы «привет мир» вывести
Re: Создание модулей в Drupal: введение
Опубликовано vikeng в Чт, 10/12/2009 - 17:06.Создание такого модуля уже организовано. Правда там поздравление с Новым Годом. По случаю предыдущего нового года.
Отправить комментарий