Мой первый модуль на Drupal 6

Опубликовано admin - сб, 11/03/2012 - 12:29

Обычно изучив ту или иную CMS я начинаю писать о ней или забываю и не возвращаюсь к ней, к тому же Modx и Joomla хватало для решения любых задач, в том числе для построения любых сайтов, когда не хватало переходил на Zend Framework 2. Из всех просмотренных мной CMS(их около десятка) я отобрал joomla, modx и drupal. Drupal попал в список CMS, заслуживающих внимания за возможность использования MVC, хорошей маршрутизации и быстрой интеграции сторонних скрипов в CMS. Мой первый модуль на Drupal был написан на версии Drupal 6.

Где размещать файлы модулей Drupal.

Для размещения файлов я использую директорию "/sites/all/modules/". Мой модуль называется "test-module" поэтому директория модуля будет "/sites/all/modules/test-module ".

Обязательными файлами в директории модуля являются:

  • test_module.module - файл, содержащий php код, который является "сердцем" модуля;
  • test_module.info - информационный файл, содержаний информацию о названии, описание, версию и т.д.

 

Обязательные для модуля функции

Обязательной функцией для модуля является функция "main", при этом большинство функции модулей Drupal должны начинаться с префикса названия модуля, так как в нашем случае название модуля "test_module", следовательно, полное имя функции "test_module_main".

Функция "test_module_menu" должна возвращать массив устанавливающий маршрутом, в нашем случае это два адреса первый для страниц сайта, второй для администраторского раздела. Разберём первый массив.

ключи массива и их назначение:

  • title - заголовок страницы;
  • page callback - функция обработчик, вызываемый при открытии страницы по адресу “/honda/”, в нашем случае - "main_function";
  • access callback - функция проверяющая имеет ли пользователь доступ к данному элементу меню, в нашем случае это простая заглушка;
  • access arguments - массив аргументов, передаваемых в функцию, проверяющую права для доступа пользователю к данному модулю, которая определена в элементе массива "access callback".
  • type - тип меню, в наше случае это функция (http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_menu/7);
  • page arguments - массив аргументов, передаваемых в функцию, выполняемую при разборе нашего адреса (указана в параметре "page callback").

 

Второй элемент массива $items['admin/settings/editorpanel'] предназначен для доступа к администраторскому разделу, в нашем случае перейдя по адресу "admin/settings/editorpanel", будет выполнена функция "drupal_goto", в которую будут переданы аргументы.

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

Функция, которая выполняет основную работу в модуле, может выглядеть следующим образом:

Всё здесь я думаю понятно за исключением функция $output = theme('test_block', $imgblock,$nameblock_ru,$nameblock_en,$year,$model,$dvigatel);, которая предназначена для выбора шаблона, в который будет выводится все данные работы модуля, то есть это своеобразное представление модуля. Пример указан ниже:

После выполнения данной функции в шаблоне "test-block.tpl.php" будут доступны все переменные, которые мы передали в него. Шаблон - это обычный файл php, поэтому в нем может содержаться любая разметка html кода.

Не забывайте, про маршрутизацию, доступ к нашему модулю можно получить по адресу – "/honda", но и по адресу - "honda/aaa/bbb/ccc", тогда в качестве параметров функция "main_function" примет аргументы $year (aaa),$model (bbb),$type (ccc).

Взаимосвязанные материалы

# 1. Drupal 8. Шаг за шагом как создать модуль с отображением в admin панели (суббота, сентября 28, 2019 - 22:12 ),
Часто требуется не только создать модуль с функциональностью на страницах сайта, но и предоставить возможность конфигурировать настройки модуля в администраторском разделе. читать...
# 2. 15 лучших модулей в Drupal 8 (среда, сентября 25, 2019 - 16:11 ),

Drupal 8 одна из популярнейших CMS в области создания сайтов. При этом для неё доступно огромное количество модулей, упрощающих жизнь как простому разработку, так и обычному пользователю.

читать...
# 3. Созадние списка взаимосвязанных материалов (related post, content) (вторник, сентября 24, 2019 - 20:00 ),

Ни одна статья не обойдётся без списка взаимосвязанных материалов. читать...

# 4. Drupal 8. Как отключить кэширование отдельных страниц. (пятница, сентября 20, 2019 - 14:35 ),
Не знаю как Вы, но я потратил несколько часов чтобы отключить кэширование страниц самописного модуля. читать...
# 5. Копирую, копирую, копирую… (вторник, июня 12, 2018 - 09:59 ),

Сколько времени приходится тратить на копирование данных, перед тем как приступить к их модификации, перенос или восстановление? Много. читать...

На разработку сайта! Скидки до 20%!