Comment on page
Создание модуля
Давайте создадим свой первый простой модуль.
Это будет обычная простая страница контактов для связи с администрацией сайта.
Как нам уже известно, модули располагаются в папке modules
Сначала давайте создадим папку с модулем и назовем её contacts путь к па пке получится такой: modules/contacts
Пока создадим простой модуль без мультиязычности.
Внутри папки modules/contacts создадим подпапку templates для шаблона нашей страницы.
Так же создадим папку Controllers для контроллеров.
После выполнения этих действий у вас должна получиться такая структура:

Структура папок модуля для JohnCMS
Дополнительные папки нам больше не понадобятся.
Начиная с JohnCMS 9.4 появилась возможность использовать контроллеры. Контроллеры позволяют избавиться от большого количества базового кода, который необходимо написать для начала работы, а так же позволяют упростить настройку маршрутов и не писать самостоятельно логику по определению страницы, которую необходимо показать пользователю.
Контроллеры являются обычными php классами которые наследуют системный класс контроллера. В JohnCMS используется автозагрузка классов модулей. Чтобы она работала, нужно придерживаться некоторых правил:
- 1.Классы модуля должны располагаться в папке с модулем, а пространство имен должно быть именем папки модуля с заглавной буквы. Разрешено использовать любые директории в папке с модулем для логического разделения классов.
- 2.Для работы автозагрузки классов модуль должен быть зарегистрирован в системе. Как это сделать рассмотрим ниже.
Для работы автозагрузки классов модули необходимо регистрировать в системе. Делается это с помощью конфигурационного файла.
Создайте в папке config/autoload файл с именем modules.local.php и следующим содержимым
/config/autoload/modules.local.php
<?php
return [
'modules' => [
'installed_modules' => [
'contacts', // Название папки с модулем
],
],
];
В данном случае contacts это название папки с модулем. При добавлении дополнительных модулей просто добавьте их названия по аналогии с этим именем.
После выполнения этих действий классы вашего модуля будут загружаться автоматически если их пространство имен это название папки с вашим модулем с заглавной буквы.
В нашем случае пространством имен будет Contacts