ГлавнаяДокументацияМодули • Модуль info

Модуль 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" ',
	],
	...
];

Основные файлы модуля: