Pages, Articles & News
Tools & Plugins
Example / Placeholder Title


Description as an example placeholder. Sample text content for further customization of the "Index36" template.

You are free to edit and customize the template however you like. If you don’t have time or enough knowledge — you can always order template adaptation by contacting me via GitHub or private messages on the digital goods marketplace.

2025-08-18 17:43
Avatar" alt="" class="rounded-circle border border-2 border-light" width="54" height="54">

### Общая структура и конфигурация модуля

Модуль MultiStore является расширением для системы Cotonti Siena версии 0.9.26, совместимым с PHP 8.4. Он основан на модуле "Pages" и предназначен для управления товарами и категориями в магазине. Модуль лицензирован под BSD License.

Конфигурация модуля определяется в файле mstore.setup.php и включает:
- Глобальные параметры: 
 - Включение/отключение разметки (mstoremarkup, по умолчанию включено).
 - Выбор парсера для текста товаров (mstoreparser, по умолчанию none, с использованием функции cot_get_parsers() для получения доступных парсеров).
 - Учет просмотров товаров администраторами (mstorecount_admin, по умолчанию отключено).
 - Автоматическая валидация товаров (mstoreautovalidate, по умолчанию включено).
 - Максимальное количество списков на странице (mstoremaxlistsperpage, варианты от 5 до 20, по умолчанию 10).
 - Шаблон заголовка страницы товара ({TITLE} - {CATEGORY}).
 - Заголовок и описание магазина по умолчанию, когда не выбрана категория или товар.
 - Черный список кодов категорий для исключения из структур (mstoreblacktreecatspage).
 - Валюта (mstore_currency, варианты: USD, EUR, RUB, UAH, USDT, BTC, по умолчанию BTC).
- Параметры для категорий (структуры):
 - Порядок сортировки (mstoreorder, использует cot_mstore_config_order() для получения вариантов, по умолчанию title).
 - Направление сортировки (mstoreway, asc или desc, по умолчанию asc).
 - Максимальное количество строк на странице (maxrowsperpage, по умолчанию 30).
 - Обрезка текста в списках (mstoretruncatetext, по умолчанию 0).
 - Разрешение пустого текста (mstoreallowemptytext, по умолчанию отключено).
 - Ключевые слова, мета-заголовок и мета-описание для категорий.
 - Максимальное количество списков на странице для категорий (mstoremaxlistsperpage, варианты от 5 до 20, по умолчанию 10).

Установка модуля (mstore.install.sql) включает:
- Создание таблицы cot_mstore для хранения товаров с полями: id, alias, state, cat, title, desc, metatitle, metadesc, text, costdflt, parser, ownerid, date, updated, count.
- Вставку прав доступа для категорий (e-scooter, e-bike, system, tricycle).
- Вставку категорий в cot_structure: E-scooter, System, E-bike, Tricycle.
- Вставку примера товара (Crosser TR7 Tricycle).

Модуль использует классы: MstoreDictionary для констант состояний (STATE_PUBLISHED=0, STATE_PENDING=1, STATE_DRAFT=2), MstoreRepository для получения товаров по ID с кэшированием, MstoreControlService для удаления товаров с транзакциями и обновлением счетчиков.

### Функции для работы с категориями и структурой

Модуль предоставляет функции для работы с категориями:
- cot_mstore_selectbox_structure_select2(): Выпадающий список категорий с поддержкой Select2, отступами для подкатегорий, черным списком категорий из конфигурации, опцией скрытия приватных категорий, добавлением пустого выбора.
- cot_mstore_selectcat_select2(): Выпадающий список категорий для формы поиска с Select2, включая "Все категории", отступами, черным списком, скрытием приватных.
- cot_mstore_selectcat(): Простой выпадающий список категорий без Select2, с черным списком.
- cot_build_structure_mstore_tree(): Построение иерархического дерева категорий с рекурсией, поддержкой выделения выбранных, уровней, шаблонов, черным списком, подсчетом общего количества товаров, использованием шаблона mstore.tree.tpl, обработкой экстрафилдов, i18n.
- cot_mstore_sync(): Подсчет товаров в категории для синхронизации счетчиков.
- cot_mstore_updateStructureCounters(): Обновление счетчиков товаров в структуре категории.
- cot_mstore_updatecat(): Обновление кода категории для всех товаров.

### Функции для работы с товарами

Общие функции:
- cot_generate_mstoretags(): Генерация тегов для шаблона товара (URL, ID, TITLE, BREADCRUMBS, ALIAS, STATE, STATUS, CAT, CAT_URL, CAT_TITLE, CAT_PATH, CAT_DESCRIPTION, CAT_ICON, DESCRIPTION, TEXT, TEXT_SHORT, TEXT_CUT, TEXT_IS_CUT, DESCRIPTION_OR_TEXT, DESCRIPTION_OR_TEXT_CUT, MORE, AUTHOR, OWNER_ID, OWNER_NAME, COSTDFLT, CREATED, UPDATED, CREATED_STAMP, UPDATED_STAMP, HITS, ADMIN). Поддержка экстрафилдов для товаров и категорий, админ-тегов (EDIT, UNVALIDATE, DELETE, CLONE), статуса (published, pending, draft).
- cot_cut_more_mstore(): Обрезка текста товара по тегу <!--more-->, [more], <hr class="more"> или [newpage], удаление [title].
- cot_readraw_mstore(): Чтение сырого содержимого файла с проверкой на '..'.
- cot_mstore_status(): Определение статуса товара (published, pending, draft).
- cot_mstore_enum(): Генерация виджета списка товаров с фильтрами по категориям, лимиту, шаблону, порядку, условию, активным только, подкатегориям, исключением текущего, черным списком, пагинацией, кэшированием. Поддержка комментариев, тегов.
- cot_mstore_url(): Генерация URL товара с параметрами, хвостом, обходом htmlspecialchars.
- cot_mstore_auth(): Получение прав доступа для категории (auth_read, auth_write, isadmin, auth_download).
- cot_mstore_import(): Импорт данных товара из запроса (POST/DIRECT), с обработкой даты, обновления, парсера, экстрафилдов, прав.
- cot_mstore_validate(): Валидация данных товара (категория, заголовок, алиас, текст), проверка блокировки категории.
- cot_mstore_add(): Добавление товара с проверкой ошибок, уникальностью алиаса, автоматической валидацией, хуками, обновлением счетчиков, логом.
- cot_mstore_update(): Обновление товара с проверкой ошибок, уникальностью алиаса, хуками, обновлением счетчиков, логом.

### Добавление товара (mstore.add.php)

Форма добавления товара:
- Импорт категории, клонирование существующего товара.
- Проверка прав записи в категорию, блокировки категории.
- Генерация хлебных крошек, подзаголовка, noindex.
- Форма с полями: категория (selectbox с Select2), метатайтл, метаописание, алиас, заголовок, описание, владелец, дата (с опцией "сейчас"), текст (textarea с редактором), парсер, стоимость по умолчанию, экстрафилды.
- Валидация и добавление с хуками, редиректом в зависимости от состояния (опубликовано - на страницу, на рассмотрении - сообщение, черновик - редактирование).
- Поддержка кнопки добавления для пользователей с правами.

### Редактирование товара (mstore.edit.php)

Форма редактирования товара:
- Импорт ID, категории, парсера.
- Проверка существования товара, прав чтения/записи.
- Генерация статуса, подзаголовка, noindex, сублиокации.
- Форма с полями: категория (selectbox с Select2), метатайтл, метаописание, алиас, заголовок, описание, дата, обновлено, текст, парсер, стоимость по умолчанию, экстрафилды, владелец/просмотры (для админов).
- Опция удаления с подтверждением.
- Обновление с хуками, редиректом в зависимости от состояния.
- Поддержка мульти-табов в тексте ([newpage]).

### Список товаров (mstore.list.php)

Отображение списка:
- Импорт сортировки, направления, категории, фильтров, поиска, пагинации.
- Проверка прав чтения для категории (специальные: all, system, unvalidated, saved_drafts).
- Фильтры: категория, поиск по заголовку/тексту, состояние, дата, владелец.
- Сортировка по полям (id, title, desc, text, ownerid, date, count, updated, cat), направление (asc/desc).
- Обрезка текста в списках.
- Генерация дерева категорий, хлебных крошек, пагинации.
- Теги для шаблона: категория (код, заголовок, RSS, путь, URL, описание, иконка), поиск (форма с Select2), пагинация, добавление товара.
- Цикл по подкатегориям и товарам с тегами, комментариями, экстрафилдами.
- Кэширование для гостей.

### Просмотр товара (mstore.main.php)

Отображение отдельного товара:
- Импорт ID/алиаса, категории, страницы мульти-таба.
- Проверка существования, прав чтения, состояния (скрытие черновиков/на рассмотрении для не-владельцев/не-админов).
- Увеличение счетчика просмотров (с опцией для админов).
- Генерация тегов, мульти-табов ([newpage]), навигации по табам.
- Подзаголовок, мета, канонический URL, noindex (false).
- Админ-опции.

### Административная панель (mstore.admin.php)

Управление товарами:
- Фильтры: все, на рассмотрении, опубликованные, черновики.
- Сортировка по полям, пагинация.
- Массовые действия: валидация, удаление с подтверждением.
- Действия для товара: валидация, отмена валидации, удаление, редактирование с хуками, логами, очисткой кэша.
- Статистика: общее количество, на рассмотрении.
- Ссылки: конфиг, добавление, экстрафилды, структура.

### Интеграция с профилем пользователя (mstore.userdetails.php)

Вкладка товаров в профиле:
- Импорт вкладки, категории, пагинации.
- Проверка прав, состояния (опубликовано для не-владельцев/не-админов).
- Список категорий пользователя с счетчиками.
- Список товаров с тегами, пагинацией, удалением (для владельца/админа).
- Кнопка добавления для пользователей с правами.
- noindex false для вкладки.

Account