Как стать автором
Обновить

Разработка для Concrete5: Простейший модуль

Время на прочтение3 мин
Количество просмотров3.3K
В этом уроке я предлагаю рассмотреть, как делается минимальный модуль для Concrete5 CMS (в терминологии системы модули называются блоками) на примере модуля «Разделитель».

Допущу себе небольшое отступление и упомяну, что при разработке расширений для Concrete5 широко используется схема MVC, по этой причине я бы рекомендовал незнакомым с ней, сначала разрбраться что это такое и только потом продолжить чтение.

В самом простом модуле нам необходимы всего 3 файла в директории blocks/horizintal_line:
  • controller.php
  • view.php
  • icon.png

controller.php

По названию уже понятно что это файл контроллера. Все, кто знаком с MVС, думаю, понимают что без него нам никак не обойтись. Контроллер содержит в себе управляющий код модуля, отвечающий за обработку всех действий, производимых модулем. Конкретно этот контроллер содержит класс HorizintalLineBlockController наследуемый от базового класса BlockController'а, выполняющего все необходимые нам, в данном случае, действия (установка, вывод и т.п.). Наш же класс, содержит определения для необходимых полей класса, таких как название модуля, описание, настройки кеширования.

<?php  defined('C5_EXECUTE') or die("Access Denied.");

class HorizintalLineBlockController extends BlockController {
	// название модуля для списка модулей
	protected $btName = 'Разделитель'; 
	// краткое описание модуля
	protected $btDescription = 'Модуль содержит тег HR и используется для разделения блоков на странице'; 

	// кэшировать вывод модуля для обычных посетителей
	protected $btCacheBlockOutput = true; 
	// кэшировать вывод модуля для зарегистрированных пользователей
	protected $btCacheBlockOutputForRegisteredUsers = true; 
	// время жизни кэша
	protected $btCacheBlockOutputLifetime = CACHE_LIFETIME; 
}


Обращу внимание, что название директории с модулем и и имя контроллера должны соответствовать друг другу ибо таковы соглашения об именовании. Соответствие определяется так:
  1. берем название директории
  2. делаем заглавными первую букву и все первые буквы идущие после символа подчеркивания, если таковой есть, вот так Horizintal_Line
  3. убираем символы подчеркивания, получаем HorizintalLine
  4. в конце добавляем название класса родительского контроллера BlockController и получаем HorizintalLineBlockController

Если не соблюдать соглашение, то система просто не найдет наш модуль и не сможет его установить.

view.php

Этот файл содержит в себе PHP и HTML, которые отвечают за построение вывода содержимого модуля на странице по-умолчанию. В нашем примере файл предельно прост и содержит всего две строки.

<?php  defined('C5_EXECUTE') or die("Access Denied.");?>
<hr />


Для любого модуля можно сделать неограниченное количество аналогов view.php в поддиректории templates нашего модуля, для изменения его внешнего вида. Эти «отображения» можно подключать к модулю прямо через интерфейс CMS без необходимости залезать в код.

icon.png

Пиктограмма модуля, которая вводится в списке модулей при его добавлении на страницу.

Примечание: во всех файлах PHP, которые делаются для работы под управлением этой CMS, необходимо первой строкой включать следующий код:
<?php  defined('C5_EXECUTE') or die("Access Denied.");?>


На этом первый урок закончен, если у сообщества будет интерес, то я продолжу.

Ссылки для интересующихся

Сайт CMS: concrete5.org
Русское сообщество: http://forum.c5r.ru/
Русская сборка: https://c5r.ru/download/download-concrete5, хотя скачанный с официального сайта дистрибутив уже имеет поддержку русского языка.
Этот модуль на GitHub: horizintal_line
Теги:
Хабы:
Всего голосов 14: ↑5 и ↓9-4
Комментарии5

Публикации

Истории

Работа

PHP программист
99 вакансий

Ближайшие события

2 – 18 декабря
Yandex DataLens Festival 2024
МоскваОнлайн
11 – 13 декабря
Международная конференция по AI/ML «AI Journey»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань