Ромка!eu

  • Отдых
  • Работа
  • Штуки-дрюки
Главная — Блоги — Ромка's blog

Разработка модуля для Drupal. Часть1. Введение

  • Просмотреть
  • Голоса

Ромка — Вс, 01/03/2010 - 19:15

144
points

Система управления сайтом Drupal построена по модульному принципу: компактный набор служебных функций (ядро) расширяется при помощи модулей — файлов с PHP-кодом. Модули должны содержать «хуки» (hooks) — особым образом именованные функции, которые вызываются ядром Drupal при возникновении каких-либо событий. Каждый модуль имеет системное имя, которое должно состоять из латинских букв, цифр, знака подчеркивания (и начинаться обязательно с буквы). Имя хука должно состоять из двух частей: имени модуля и названия события. При возникновении любого события ядро Drupal в каждом из установленных модулей ищет и выполняет соответствующую функцию, т. е. функцию с именем название_модуля_название_события. Например, при возникновении событий, связанных с учетной записью пользователя (регистрация, авторизация, изменение роли пользователя и др.), ядро Drupal вызывает функции, реализующие хук hook_user, поэтому, чтобы модуль с именем example мог отреагировать на это событие, в нем необходимо объявить функцию с именем example_user(). Список передаваемых в эту функцию аргументов, пример ее использования и информацию обо всех функциях и хуках, доступных в Drupal, можно найти на странице официальной документации http://api.drupal.org или ее русской версии: http://api.drupal.ru.

Эта статья — продолжение материала, посвященного CMS Drupal (см. PC Magazine/RE, 12/2008). В первой статье подробно рассказано о назначении и возможностях системы, а также приведены примеры сборки сайтов на Drupal с использованием уже существующих модулей. Этот же материал будет больше интересен техническим специалистам, умеющим программировать на языке PHP, знакомых с основами HTML и CSS, и тем, кто хочет познакомиться с методами разработки собственных модулей для этой системы. Перед чтением этого материала рекомендуется освежить в памяти информацию, просмотрев ее первые три раздела.

Актуальную версию модуля, разработанного в рамках этой статьи, можно найти на здесь.

Каждый модуль для Drupal представляет два файла или более, которые должны находиться в папке sites/all/modules/название_модуля.

Строго говоря, модули могут находиться не только в sites/all/modules, но и в некоторых других папках, например sites/example.com/modules или sites/all/modules/example/example_submodule, но описание таких конфигураций выходит за рамки этой статьи.

В файле название_модуля.info должна находиться служебная информация, а в файле название_модуля.module — исходный текст. При наличии этих двух файлов модуль станет доступным на странице установки модулей Drupal (Administer — Modules, admin/build/modules). Кроме того, в этой же папке может находиться необязательный файл название_модуля.install, содержащий реализации хуков, которые будут выполнены при инсталляции модуля. В этом файле обычно располагаются инструкции, создающие новые таблицы в базе данных и задающие значения по умолчанию для настроек модуля.

В статье будут ссылки на страницы англоязычной документации api.drupal.org. В приводимых адресах домен первого уровня org можно заменить на ru, и тогда вы получите доступ к описанию той же функции на русском языке (если оно доступно). Правда, это правило относится только к ссылкам на домен третьего уровня http://api.drupal.org, а не к ссылкам на домен второго уровня drupal.org и другие его поддомены.

  • Руководство по разработке модулей: http://drupal.org/node/206754.
  • Параметры, используемые в .info-файлах: http://drupal.org/node/231036.
  • Введение в Schema API: http://drupal.org/node/146843.
  • Типы полей, используемых в Schema API: http://drupal.org/node/159605.
  • Описание hook_menu(): http://api.drupal.org/api/function/hook_menu/6.
  • Описание типов полей Forms API: http://api.drupal.org/api/file/developer/topics/forms_api_reference.html/6.
  • Описание hook_block(): http://api.drupal.org/api/function/hook_block/6.

Для иллюстрации использования системы хуков я приведу пример разработки простого модуля, который формирует блок с информацией о курсах валют. Этот модуль по расписанию (при запуске крона) будет соединяться с сервером ЦБ РФ и получать от него информацию о курсах валют. На основе полученных данных и настроек, заданных через интерфейс управления модулем, а также функций темизации будет генерироваться выходный HTML-код. Он будет кэшироваться стандартными средствами Drupal (благодаря чему администратор при желании сможет перенести этот кэш из базы данных, например, в файловую систему или memcache) и выдаваться по запросу пользователя в виде блока. Итак, приступим…

Модуль получит название currencies. На первом этапе его разработки необходимо (относительно корня Drupal-сайта) создать папку sites/all/modules/currencies, в которой мы будем сохранять новые файлы.

Ссылки на другие части этой статьи:

  • Часть 1. Основы модульной системы Друпала
  • Часть 2. Разработка простейшего модуля
  • Часть 3. Введение в темизацию Друпала (для программистов, а не дизайнеров)

Содержание всех статей: http://romka.eu/blog/my-drupal-articles

  • Drupal
  • модуль
  • статья
  • Ромка's blog
  • Quote

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • Вы можете использовать тэг <code></code> для подсветки синтаксиса программного кода. The supported tag styles are: <foo>, [foo].
  • You may quote other posts using [quote] tags.

Подробнее о форматировании

CAPTCHA
Если вы человек, а не робот, то введите текст с картинки. Если вы робот, то велкам ту майкрософт.ком.
Image CAPTCHA
Enter the characters shown in the image.

Обо мне

Всем привет!
Меня зовут
Роман Архаров, я профессиональный веб-разработчик, программирую на языках PHP, Python и Action-Script, в работе использую фреймворки Drupal и Django. В этом блоге я размещаю заметки и статьи, связанные с моей работой, отдыхом и другими интересными мне темами.

Похожие заметки

  • Несколько статей о Друпале
  • Swftools и модуль Pdf2SWfField для Друпала
  • Разработка модуля для Drupal. Часть2
  • Пример разработки плагина для модуля CCK
  • Темизация Drupal. Часть 2. Анатомия темы оформления Drupal

Популярные заметки

  • AJAX. Обмен данными между клиентом и сервером, закачка на сервер файлов без перезагрузки страницы при помощи библиотеки jQuery.
  • Темизация Drupal. Часть 2. Анатомия темы оформления Drupal
  • Темизация Drupal. Часть 4. Темизация Views
  • Тестирование модуля "Inner poll"
  • Темизация Drupal. Часть 1
  • Несколько статей о Друпале
  • Разработка сайта на Drupal. Часть 3. Модули Drupal.
  • Автоматическая "газетная" верстка (верстка в несколько колонок)
  • Backup-manager — настройка резервного копирования Linux-сервера на Amazon S3 за 5 минут
  • Динамическое добавление элементов к форме

Подписка


Последние комментарии

  • Артем → Темизация Drupal. Часть 4. Темизация Views → Спасибо большое!
  • Anonymous → Темизация Drupal. Часть 2. Анатомия темы оформления Drupal → Большое спасибо автору за
  • Yor Ik → Авторизация на Drupal-сайте с помощью аккаунта вКонтакте → при входе на сайте
  • Химик → Home sheep home → Игра просто поглатитель времени
  • Artu → Темизация Drupal. Часть 4. Темизация Views → Спасибо,
  • icemen → Разработка модуля для Drupal. Часть2 → Благодарности
  • Федор → Проверка имени пользователя на наличие букв из разных алфавитов → . . . . . . . . . . . . . . .
  • oZEROth2008 → Авторизация на Drupal-сайте с помощью аккаунта вКонтакте → ответьте на мой вопрос
  • witalikm → Drupal for Firebug → После вашего совета пробовал
  • Shu → Drupal for Firebug → F12

Новые заметки

  • Авторизация на Drupal-сайте с помощью аккаунта ВКонтакте
  • Home sheep home
  • Backup-manager — настройка резервного копирования Linux-сервера на Amazon S3 за 5 минут
  • Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 3 — Бали, Сингапур, Пхукет
  • Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 2 — Джокьякарта
  • Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 1 — Пхукет и Джакарта
  • Шпаргалка по командам и хоткеям Unix
  • Семинар по хапкидо в Днепропетровске
  • О планах
  • Несколько статей о Друпале

Тэги

dckyiev09 Drupal jquery Индонезия Отдых Работа Штуки-дрюки зима зима 2010 модуль статья темизация
еще тэги

Вход для пользователей

Что такое OpenID?
  • Войти по OpenID
  • Скрыть вход по OpenID
  • Зарегистрироваться
  • Запросить новый пароль

Навигация

  • Exchange rate
  • Vote up/down
  • Переход по внешней ссылке
  • Последние сообщения
  • Фотогалереи

Курсы валют

  • 100 Казахских тенге — 20,8329 (-0.09)
  • 10 Украинских гривен — 38,8969 (-0.14)
  • 10 Китайских юаней — 45,0421 (-0.17)
  • 100 Японских иен — 36,4634 (-0.11)
  • 1 Доллар США — 30,6858 (-0.11)
  • 1 Евро — 39,2901 (+0.12)
  • 1000 Белорусских рублей — 10,1743 (-0.04)
  • 1 Турецкая лира — 20,2279 (0)

10 случайных заметок

  • Куба. Лето 2008. Часть 1
  • Поездка в Киев
  • Tagnetic — холодильник тэгов
  • Странное поведение Java-script в IE. Один и тот же скрипт в Firefox работает, а в IE – нет.
  • О планах
  • Лето 2007. Путешествие в Камбоджу – Таиланд – Малайзию. Часть 3. Камбоджа, Пномпень.
  • Киви не умеют летать?
  • Пример разработки плагина для модуля CCK
  • Backup-manager — настройка резервного копирования Linux-сервера на Amazon S3 за 5 минут
  • Швабрашвабр2

Случайные фото

Вечерний Копенгаген
В аэропорту
Еще одно фото замка
Вид на Осло из замка Акерхус
Взгляд в будущее
И у люююбви у нааашеей сееела...
Здание замка Акерхус
На пути в Баракоа
Еще горы
Крым
Тринидадские спортсменчики
В пути
Сочи ночью
Копенгаген, Кристиания, Граффити 6
Дольмен
Я и мой автопарк :))
  • Отдых
  • Работа
  • Штуки-дрюки

При использовании материалов с сайта, пожалуйста, ставьте ссылку на источник. E-mail для связи: mne@romka.eu.