Модуль catalog
Модуль каталога. Сожержит функционал каталогов (разделов), элементов каталога (товаров), корзины, заказа, системы управления заказами. Для вызова, нужно создать раздел с единственным файлом _section.php. Пример файла:
<?php
if (!defined('MC2_CORE') || MC2_CORE !== true) die();
// Информация о разделе
$mc_section = [
'title' => 'Каталог',
'description' => 'Каталог товаров',
'img' => URLROOT_EN.'/files/site/preview.jpg',
'sitemap_changefreq' => 'weekly',
'sitemap_priority' => 0.6,
'module_name' => 'catalog',
'module_param' => 'main',
'uri_catalog_id' => 1,
'uri_element_id' => 2,
];
Данный вызов означает, что загружается модуль catalog и используется шаблон из папки TMPL/catalog/main.
Модуль использует подход с множественными таблицами в файле init.php:
<?php
if (!defined('MC2_CORE') || MC2_CORE !== true) die();
// Настройки модуля
$module_info = [
'tables' => [ // не менять! внутренние id таблиц, НЕ названия. названия указываются в init_<id>.php
'catalog',
'element',
'catalog_param',
'element_param',
'basket',
'order',
'order_items',
'money',
],
'title' => 'Каталог',
'uri' => 'catalog', // корень раздела
'folder' => 'catalog', // папка по-умолчанию для файлов относительно /files
'admin' => 'catalog', // права админов через запятую ,
'in_admin' => true, // показывать ли раздел в админке
'notify_email' => [ // массив, на какие e-mail отправлять уведомления
ADMIN_EMAIL,
],
'notify_tg' => [ // массив, на какие telegram id отправлять уведомления (только число, не @имя)
//0,
],
'notify_vk' => [ // массив, на какие vk id отправлять уведомления (только число, не @имя)
//0,
],
];
Основные файлы модуля:
- 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 — основной файл для админки
- admin_order_list.php — список заказов для админки
- sitemap.php — функционал генерации файла карты сайта sitemap.xml
- basket.php — функционал корзины, backend для AJAX запросов
Чтобы создать раздел для доступа пользователя к корзине, нужно в разделе (например, /basket) создать index.php:
<?php
if (!defined('MC2_CORE') || MC2_CORE !== true) die();
module('catalog', 'catalog', ['action' => 'basket_list']);
То есть при вызове модуля каталога нужно добавить третий параметр настройки 'action' => 'basket_list'.