Фронтенд модуля MultiStore для пользователя-продавца
Модуль MultiStore предоставляет пользователям сайта с правами на чтение (auth_read) и запись (auth_write) в категориях инструменты для работы с товарами на фронтенде. Продавец может просматривать опубликованные товары (свои и чужие), добавлять новые, редактировать и удалять свои товары, управлять ими в личном профиле. Фронтенд включает формы добавления/редактирования, списки товаров с фильтрами и пагинацией, страницы отдельных товаров с мульти-табами. Все действия происходят в рамках доступных категорий, с учетом состояний товаров (опубликовано, на рассмотрении, черновик). Ниже описан функционал подробно, ориентированный на взаимодействие через веб-интерфейс.
Доступ к категориям и навигация
Продавец может просматривать категории товаров, где у него есть права на чтение. Категории отображаются в виде дерева (иерархической структуры) с уровнями, заголовками, описаниями, иконками и счетчиками товаров. Дерево строится рекурсивно, исключая категории из черного списка (настроенного в конфигурации), приватные категории (если скрыты) и системные. Для каждой категории доступны:
- URL на список товаров в категории.
- Хлебные крошки (breadcrumbs) с путем от главной страницы до текущей категории (например, Главная > MultiStore > [Категория]).
- Укороченная версия пути для компактного отображения.
- Экстрафилды категорий (если настроены), такие как кастомные атрибуты, отображаемые в шаблоне.
- Пагинация подкатегорий (если их много, лимит из конфигурации, по умолчанию 10 на страницу).
- Выделение выбранной категории в дереве.
В списках категорий поддерживается фильтрация подкатегорий по родительской, с отступами для иерархии. Продавец может выбрать категорию из выпадающего списка (selectbox) с поддержкой Select2 для поиска и автодополнения, включая опцию "Все категории" или пустой выбор. Список исключает черный список и приватные категории. Если категория не выбрана, отображается общий список товаров с заголовком и описанием по умолчанию (из конфигурации).
Навигация включает RSS-ссылку на категорию, иконку категории (если задана), общее количество товаров в категории и подкатегориях. Для своих категорий (где есть права на запись) отображается кнопка "Добавить товар".
Добавление нового товара
Форма добавления доступна по URL вроде "m=add" (или "m=add&c=[категория]" для конкретной категории), если у продавца есть права на запись в категории. Форма включает:
- Выбор категории из выпадающего списка с Select2 (отступы для подкатегорий, только доступные категории без заблокированных).
- Поле для метатайтла (текстовое, до 255 символов).
- Текстовое поле для метаописания (до 2 строк, 64 символов, до 255).
- Поле для алиаса (текстовое, до 255 символов).
- Обязательное поле для заголовка (текстовое, минимум 2 символа, до 255).
- Текстовое поле для краткого описания (до 2 строк, 64 символов, до 255).
- Поле для владельца (отображается имя текущего пользователя, ID фиксировано).
- Выбор даты публикации (селектбокс с календарем, опция "сейчас" через чекбокс).
- Большое текстовое поле для полного текста (24 строки, 120 символов шириной, с редактором для форматирования).
- Выбор парсера для текста (селектбокс из доступных, таких как none, HTML, с учетом прав на использование).
- Поле для стоимости по умолчанию (текстовое, до 10 символов, форматируется с двумя знаками после запятой).
- Экстрафилды (если настроены администратором): поля для ввода кастомных данных, таких как изображения, файлы, числа, текст и т.д., с заголовками.
Форма поддерживает клонирование товара по ID (копирование данных из существующего). После заполнения:
- Сохранение как "опубликовано" (если автовалидация включена), "на рассмотрении" (для модерации) или "черновик".
- Редирект: на страницу товара (если опубликовано), сообщение о модерации или на редактирование (черновик).
- Хлебные крошки: Главная > MultiStore > [Категория] > Добавление товара.
- Noindex включен для страницы формы, чтобы не индексировалась поисковиками.
Валидация на фронтенде: проверка категории (обязательна, не заблокирована), заголовка (минимум 2 символа), алиаса (уникальность, формат), текста (если не разрешены пустые). Ошибки отображаются в сообщениях.
Редактирование и удаление товара
Форма редактирования доступна по URL "m=edit&id=[ID]" для своих товаров. Функционал аналогичен добавлению, с дополнительными элементами:
- Отображение текущего статуса (published, pending, draft) с локализованным текстом.
- Поле даты обновления (отображается автоматически, readonly).
- Опция "Установить дату сейчас" (чекбокс).
- Радиокнопка для удаления (Да/Нет) с подтверждением.
- Поддержка мульти-табов в тексте: разделение на страницы с [newpage], заголовками [title]...[/title], навигацией (пагенация с 0-индексацией, отключением easypagenav временно).
- Экстрафилды с текущими значениями.
После сохранения: обновление данных, смена статуса, редирект аналогично добавлению. Удаление: подтверждение, удаление связанных файлов экстрафилдов, обновление счетчиков категории, редирект в список. Хлебные крошки: Главная > MultiStore > [Категория] > [Заголовок] > Редактирование. Noindex включен.
Список товаров в общем разделе
Общий список доступен по URL "mstore" или с параметрами (c=[категория], s=[сортировка], w=[направление], sq=[поиск], d=[пагинация]). Функционал:
- Фильтр по категории (включая подкатегории, если включено), поиск по заголовку/тексту.
- Сортировка по полям (id, title, desc, text, ownerid, date, count, updated, cat) с направлениями (asc/desc), стрелками для изменения.
- Пагинация (лимит из конфигурации категории или по умолчанию 10, с prev/next/first/last/current/total).
- Отображение: дерево категорий с подкатегориями, хлебные крошки (полные/укороченные), поисковая форма (текстовое поле + селект категорий с Select2).
- Для каждого товара: URL, заголовок, описание, текст (обрезанный по конфигурации категории, с "more" ссылкой), стоимость, даты, просмотры, статус, владелец, экстрафилды, комментарии (если плагин активен: ссылка, счетчик).
- Кнопка добавления товара в категории (если права на запись).
- Видны: все опубликованные товары + свои на рассмотрении/черновики.
- Сообщения о результатах поиска (количество позиций или "ничего не найдено").
- Стили: oddeven для строк, нумерация.
- Noindex отключен для списков.
Специальные списки: unvalidated (свои на рассмотрении), saved_drafts (свои черновики) с сортировкой по дате DESC.
Список товаров в профиле пользователя
В профиле (tab=mstore) отображается вкладка с товарами продавца:
- Список категорий с иконками, заголовками, URL, счетчиками товаров, выделением выбранной.
- Фильтр по категории (cat=[код]).
- Пагинация (dmstore, лимит по умолчанию 10).
- Сортировка по дате DESC (фиксировано).
- Для каждого товара: теги как в общем списке, плюс кнопка удаления с подтверждением и редиректом обратно (redirect параметр).
- Общий счетчик товаров, счетчики по категориям.
- Кнопка добавления (если права).
- Видны: опубликованные + свои на рассмотрении/черновики.
- Noindex отключен для вкладки.
Просмотр страницы товара
Страница товара по URL (id=[ID] или al=[алиас], pg=[таб] для мульти-табов):
- Теги: URL, ID, заголовок, хлебные крошки (полные, включая товар), алиас, состояние/статус, категория (URL, заголовок, путь, описание, иконка), описание, текст (полный или обрезанный по [more]/[newpage]), стоимость, автор/владелец (с тегами пользователя), даты (с форматом datetime_medium), просмотры.
- Мульти-табы: разделение текста на вкладки с номерами, заголовками, навигацией (pagenav без easypagenav).
- Для своих товаров: ссылки на редактирование, удаление с подтверждением.
- Увеличение просмотров при посещении (учитывается для всех).
- Мета: title (из метатайтла или заголовка + категория), desc (из метаописания или описания), keywords (из товара).
- Канонический URL, sublolocation по заголовку, last_modified по обновлению.
- Noindex отключен.
- Хлебные крошки: Главная > MultiStore > [Категория] > [Заголовок].
Дополнительные элементы фронтенда
- Поиск: форма с полем запроса (autofocus, class form-control) и селектом категорий (Select2), действие на URL списка.
- Комментарии: интеграция с плагином comments (ссылка, счетчик в списках).
- Экстрафилды: отображение в списках/страницах/формах с заголовками, форматированием (build_extrafields_data).
- Валюта: отображается в тегах стоимости (из конфигурации).
- Сообщения: ошибки/успех (например, "Сохранено как черновик", "На рассмотрении").
- Кэширование: прозрачно для пользователя, ускоряет загрузку списков/страниц для гостей.