Модуль info
Основной модуль для создания информационных разделов: новости, статьи, галерея, сертификаты, частые вопросы... Если нужен раздел с одинаковыми структурированными элементами можно использовать модуль info. Для вызова, нужно создать раздел с единственным файлом _section.php. Пример файла:
<?php
if (!defined('MC2_CORE') || MC2_CORE !== true) die();
// Информация о разделе
$mc_section = [
'title' => 'Новости',
'description' => 'Список новостей',
'img' => URLROOT_EN.'/files/site/preview.jpg',
'canonical' => URLROOT_EN.'/news/',
'sitemap_changefreq' => 'weekly',
'sitemap_priority' => 0.6,
'module_name' => 'info',
'module_param' => 'news',
'uri_id' => 1,
];
Данный вызов означает, что загружается модуль info и используется шаблон из папки TMPL/info/news.
Модуль использует подход с одной таблицей в файле init.php:
<?php
if (!defined('MC2_CORE') || MC2_CORE !== true) die();
// Настройки модуля
$module_info = [
'table' => 'info', // Имя таблицы, только a-zA-Z0-9_-
'prefix' => 'n_',
'title' => 'Инфо',
'title_edit' => 'Редактирование новости',
'items' => 12, // Количество элементов на странице. 0 - все
'uri' => 'info', // корень раздела
'folder' => 'info', // папка по-умолчанию для файлов относительно /files
'ajax_append' => true,
'admin' => 'editor', // права админов через запятую ,
'in_admin' => true, // показывать ли раздел в админке
];
// Структура таблицы
$module_db = [
'id' => [
'type' => 'int',
'length' => 11,
'auto_increment' => true,
'primary_key' => true,
'nullable' => false,
],
'date_time' => [
'type' => 'datetime',
'nullable' => false,
],
'title' => [
'type' => 'varchar',
'length' => 255,
'nullable' => false,
],
'text' => [
'type' => 'mediumtext',
'nullable' => false,
],
...
];
// Описание формы
$module_form = [
'id' => [
'type' => 'hidden',
],
'date_time' => [
'type' => 'hidden',
'label' => 'Дата и время',
],
'_date' => [
'type' => 'date',
'label' => 'Дата',
'col_left' => 'col-4 col-lg-2',
'col_right' => 'col-8 col-lg-10',
],
'_time' => [
'type' => 'time',
'label' => 'Время',
'col_left' => 'col-4 col-lg-2',
'col_right' => 'col-8 col-lg-10',
],
'_img_file' => [
'type' => '',
'label' => 'Фото',
'attr' => '',
],
'_img_delete' => [
'type' => 'checkbox',
'label' => 'Удалить',
'label_text' => 'Удалить фото',
'col_left' => 'col-4 col-lg-2',
'col_right' => 'col-8 col-lg-10',
],
'_img' => [
'type' => 'file',
'postfix' => '', // постфикс для имени файла. обязательно, если файлов несколько
'ext' => 'jpg', // формат сохранения картинки. если пусто - не менять
'width' => 800,
'height' => 600,
'label' => 'Новое фото',
'attr' => 'class=""',
'allowed_types' => ['jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp'], // разрешённые типы
'max_size' => 20 * 1024 * 1024,
],
'title' => [
'type' => 'text',
'label' => 'Заголовок',
'attr' => 'class="w-100" maxlength="255" autocomplete="off" placeholder="Заголовок" required', // дополнительные атрибуты
],
'text' => [
'type' => 'textarea',
'label' => 'Текст',
'attr' => 'class="ckeditor" rows="5" autocomplete="off" ',
],
...
];
Основные файлы модуля:
- index.php — основная логика
- form.php — форма редактирования
- before_show.php, after_show.php, before_save.php, after_save.php — код, выполняющийся в разные моменты редактирования
- list.php — список элементов
- list_item.php — элемент для списка
- single.php — отдельная страница
- admin_list.php — основной файл для админки
- page.php — функционал подгрузки следующей страницы списка элементов
- sitemap.php — функционал генерации файла карты сайта sitemap.xml