Ромка!eu

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

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

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

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

58
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> для подсветки синтаксиса программного кода. Действие тэга "<foo>" аналогично тэгу "[foo]".
  • You may quote other posts using [quote] tags.

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

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

Обо мне

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

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

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

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

  • Разработка сайта на Drupal. Часть 4. Пример разработки корпоративного интранет-сайта на Drupal
  • Перетаскивание строк таблицы. Table drag and drop — плагин для jQuery
  • Cinnamon Chasers - Luv Deluxe (Music Video)
  • Разработка сайта на Drupal. Часть 3. Модули Drupal.
  • Разработка сайта на Drupal. Часть 6. Оптимизация Друпал
  • Куба. Лето 2008. Часть 3
  • Темизация Drupal. Часть 1
  • Пример разработки плагина для модуля CCK
  • Отладка CSS. Расширения Firebug, View formatted Source и Web Developer для Firefox
  • Автоматическая "газетная" верстка (верстка в несколько колонок)

Подписка


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

  • Гость → Знак → Явное плоскостопие
  • Anonymous → Swftools и модуль Pdf2SWfField для Друпала → Здравствуйте, Рома! Все
  • Всеволод → Разработка сайта на Drupal. Часть 4. Пример разработки корпоративного интранет-сайта на Drupal → Panels
  • vsevolod → Несколько статей о Друпале → Статьи
  • Looker → Swftools и модуль Pdf2SWfField для Друпала → Привет! Все вроде делаю
  • Feniksss89 → Динамическое добавление элементов к форме → Не получается.
  • Anonymous → Разработка сайта на Drupal. Часть 6. Оптимизация Друпал → У меня на одном из сайтов
  • Anonymous → Модуль "Курсы валют" для Drupal 6 → Модуль
  • Smith → Разработка сайта на Drupal. Часть 4. Пример разработки корпоративного интранет-сайта на Drupal → Thanks for giving out
  • Anonymous → Получение заголовков (headers) страницы при помощи Java-script → индия курсовые по физике

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

  • Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 3 — Бали, Сингапур, Пхукет
  • Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 2 — Джокьякарта
  • Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 1 — Пхукет и Джакарта
  • Шпаргалка по командам и хоткеям Unix
  • Семинар по хапкидо в Днепропетровске
  • О планах
  • Несколько статей о Друпале
  • Темизация Drupal. Часть 4. Темизация Views
  • Темизация Drupal. Часть 3. Основы Drupal Forms API и темизация форм
  • Темизация Drupal. Часть 2. Анатомия темы оформления Drupal

Тэги

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

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

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

Навигация

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

Курсы валют

  • 100 Казахских тенге — 20,2044 (-0.06)
  • 10 Украинских гривен — 37,0715 (-0.11)
  • 10 Китайских юаней — 43,5819 (-0.12)
  • 100 Японских иен — 33,0298 (-0.39)
  • 1 Доллар США — 29,7499 (-0.09)
  • 1 Евро — 40,4866 (-0.03)
  • 1000 Белорусских рублей — 10,0984 (-0.05)
  • 1 Турецкая лира — 19,3760 (+0.12)

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

  • Зима 2010. Поездка в Тайланд, Индонезию и Сингапур. Часть 1 — Пхукет и Джакарта
  • Backbird — скажи "прощай" алертам или удобная отладка java-script.
  • Вышел Drupal 6.0 beta 1
  • AJAX. Обмен данными между клиентом и сервером, закачка на сервер файлов без перезагрузки страницы при помощи библиотеки jQuery.
  • El Empleo
  • Тестовое письмо из Копенгагена.
  • Баг jQuery в Firefox 3 и WebKit
  • Отладка CSS. Расширения Firebug, View formatted Source и Web Developer для Firefox
  • Тестирование модуля "Inner poll"
  • Разработка сайта на Drupal. Часть 1. Введение.

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

Норвегия, Нордсетер
Экзотическое меню в аэропорту :))
Вид на Бангкок с верхушки отеля Байок
Дорожка
Крым
В Сингапурском зоопарке. Попугай
Местный ходок
Я на
Вид на Осло-фьерд со стены замка
Вечерний Копенгаген
Дерево в Прамбанане
Осло, Карл Юхан Гате
Море
Желтый арбуз! Ммм, юмми!
Недалеко от Красной поляны
Оригинальная дорожная разметка в Гаване
  • Отдых
  • Работа
  • Штуки-дрюки

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