Давайте создадим свой первый простой модуль.
Это будет обычная простая страница контактов для связи с администрацией сайта.
Как нам уже известно, модули располагаются в папке modules
Сначала давайте создадим папку с модулем и назовем её contacts путь к папке получится такой: modules/contacts
Пока создадим простой модуль без мультиязычности.
Внутри папки modules/contacts создадим подпапку templates для шаблона нашей страницы.
Дополнительные папки нам больше не понадобятся т.к. модуль у нас будет содержать всего лишь одну страницу.
Создадим точку входа в модуль, которая будет открываться при запросе страницы контактов и в которой будет подключен наш шаблон. Для этого создадим файл index.php
В этом файле поместим следующий код:
<?php// Запрещаем прямой запрос к файлу модуля без подключенного ядраdefined('_IN_JOHNCMS')||die('Error: restricted access');// Инициализируем шаблонизатор$view =di(Johncms\System\View\Render::class);// Инициализируем хлебные крошки (цепочка навигации вверху всех страниц)$nav_chain =di(Johncms\NavChain::class);// Указываем шаблонизатору папку, из которой нужно загружать шаблоны нашего модуля$view->addFolder('contacts',__DIR__.'/templates/');// Добавляем ссылку Контакты в хлебные крошки$nav_chain->add('Контакты','/contacts/');// Собираем массив данных, который будет передан в шаблон$data = ['title'=>'Контакты','page_title'=>'Наши контакты',];// Дополним массив $data нашими контактными данными, которые выведем дальше в шаблоне$data['contacts'] = [ ['name'=>'E-mail',// Название контакта'value'=>'admin@example.com',// Значение, которое будет отображаться ], ['name'=>'Номер телефона','value'=>'+7 (999) 121-12-21', ], ['name'=>'Telegram','value'=>'@johncms_official', ],];// Подключаем шаблон index.phtml и передаем в него собранные выше данныеecho $view->render('contacts::index', ['data'=> $data]);
В комментариях к каждой строке кода даны пояснения для чего она.
Далее давайте создадим наш шаблон. Шаблон будет располагаться в папке templates и т.к. это основная страница контактов, назовем шаблон index.phtml
В этом файле разместим следующий код:
<?php// Подключаем основной шаблон сайта$this->layout('system::layout/default', ['title'=> $data['title'],// Передаем заголовок страницы в тег title'page_title'=> $data['page_title'],// Передаем заголовок страницы в тег h1 ]);?><div> Вы можете связаться с нами по любому из нижеперечисленных контактов:</div><ul><!-- Тут мы перебираем наш массив контактов и выводим название контакта и значение, разделяя их двоеточием --><?php foreach ($data['contacts'] as $contact):?><li><?= $contact['name'] ?>:<b><?= $contact['value'] ?></b></li><?php endforeach; ?></ul>
Наш модуль готов, но пока ещё не доступен в браузере. Давайте это исправим.
Чтобы модуль стал доступен, нужно сообщить системе, что у нас есть такой модуль и мы хотим чтобы он был доступен по определенному адресу.
Для этого давайте перейдем в папку config и в ней создадим файл routes.local.php если его ещё нет. Если есть, то откроем его и добавим маршрут для нашего модуля.
<?php/** * /contacts/ - Это адрес страницы по которому будет доступен наш модуль * modules/contacts/index.php - Это путь к точке входа в наш модуль */$map->addRoute(['GET','POST'],'/contacts/','modules/contacts/index.php');
Теперь наш модуль доступен по адресу ваш.сайт/contacts/
Теперь давайте сообщим модулю online, что у нас появился модуль контактов и нужно в списке пользователей онлайн отображать тех, кто смотрит контакты.
Для этого давайте перейдем в папку config и в ней создадим файл places.local.php если его ещё нет.
Отлично, наш модуль теперь полностью работоспособен, вам останется только добавить на него ссылку в основном шаблоне или на любой другой странице на ваше усмотрение.