Позволяет прикреплять рекомендуемые темы форума к товару и показывать их на странице этого товара. Необходимо для обсуждения и поддержки, накопления обратной связи и анализа необходимых улучшений.
Обзор и руководство по применению плагина для Cotonti с модулем Market PRO
Введение
Плагин Featured Topics Market предназначен для интеграции форума и модуля интернет-магазина Market PRO в системе управления контентом Cotonti Siena версии 0.9.26 и выше. Его основная задача — предоставить механизм привязки форумных тем к карточкам товаров и последующего отображения этих тем на странице товара в виде структурированного блока рекомендаций.
Функциональность плагина направлена на решение практической задачи: объединение коммерческого контента (товаров) и пользовательского обсуждения (форумных тем) в едином интерфейсе. Это позволяет формировать вокруг товара контекст обсуждений, поддержки, инструкций или обратной связи без дублирования информации и без нарушения архитектуры Cotonti.
Назначение и концепция плагина
Основная идея
Плагин реализует связь «товар → форумные темы» с возможностью:
- выбирать несколько форумных тем для одного товара;
- управлять этим списком непосредственно из формы редактирования товара;
- выводить выбранные темы на публичной странице товара;
- контролировать доступ к выбору тем на уровне прав пользователя.
Связь реализуется через отдельную таблицу базы данных и не затрагивает структуру стандартных таблиц Market PRO или форума, что обеспечивает изоляцию и совместимость.
Ключевые сценарии применения
Плагин применяется в следующих практических сценариях:
- Поддержка товара — прикрепление темы с вопросами и ответами.
- Обсуждение функционала — форумная ветка с предложениями и отзывами.
- Инструкции и гайды — тема с пояснениями по использованию продукта.
- Сообщество вокруг товара — объединение пользователей и продавцов.
- Пост-продажная коммуникация — снижение нагрузки на индивидуальную поддержку.
Архитектура и структура решения
Таблица связей
Для хранения связей используется отдельная таблица featured_topics_market, содержащая:
- идентификатор записи;
- идентификатор товара;
- идентификатор форумной темы;
- порядковый номер темы в рамках одного товара.
На уровне базы данных обеспечивается уникальность пары «товар–тема», что полностью исключает дублирование связей.
Интеграция в административную часть
Форма редактирования товара
Плагин подключается к хуку market.edit.tags и добавляет в форму редактирования товара специальный блок выбора рекомендуемых форумных тем.
Особенности реализации:
- количество доступных слотов ограничивается настройками плагина;
- каждый слот представлен отдельным селектором;
- выбор темы осуществляется через AJAX-поиск;
- реальное значение передается через скрытое поле;
- интерфейс не перегружен и не вмешивается в стандартную логику Market PRO.
Права доступа
Логика прав реализована строго:
- администратор может выбирать любые темы форума;
- обычный пользователь — только темы, созданные им лично;
- проверка выполняется как на этапе поиска, так и при сохранении данных.
Это исключает возможность привязки чужих тем без соответствующих прав.
AJAX-поиск форумных тем
Назначение
AJAX-обработчик используется для поиска тем форума при вводе текста в селекторе.
Реализованная логика:
- поиск активируется при вводе минимум двух символов;
- используется поиск по заголовку темы без учета регистра;
- исключается текущая тема (если передана);
- применяется лимит на количество результатов;
- результаты сортируются по дате обновления темы.
Ответ возвращается в формате JSON, совместимом с Select2, без избыточных данных.
Сохранение данных
Хук обновления товара
При сохранении товара плагин:
- полностью удаляет старые связи для данного товара;
- валидирует входные данные;
- проверяет существование и активность каждой темы;
- сохраняет связи в заданном порядке;
- строго соблюдает максимальное количество тем.
Повторяющиеся и некорректные значения автоматически отбрасываются.
Удаление товара
При удалении товара плагин автоматически очищает все связанные записи, включая случаи, когда товар фигурировал как источник или цель связи. Это предотвращает накопление «висячих» данных в базе.
Отображение на странице товара
Публичный вывод
Для публичной части используется хук market.tags. Если у товара есть связанные темы, плагин:
- загружает данные тем;
- формирует HTML-блок через отдельный шаблон;
- передает готовый результат в тег шаблона Market.
Если связанных тем нет — вывод полностью пропускается.
Отображаемые данные темы
Для каждой темы выводится:
- заголовок;
- краткое описание или превью;
- категория форума;
- количество сообщений;
- количество просмотров;
- имя последнего автора;
- дата последнего обновления;
- изображение темы или заглушка.
Работа с изображениями
Логика выбора изображения
Плагин реализует строго определенный порядок:
- определяется первый пост темы;
- проверяется наличие плагина Attacher;
- если изображение прикреплено — используется оно;
- если нет — подставляется изображение-заглушка из настроек.
Таким образом, визуальное представление всегда гарантировано.
Обработка текстового контента
Для текстов описаний используется отдельная функция очистки:
- HTML-теги удаляются;
- спецсимволы заменяются пробелами;
- нормализуются пробелы;
- текст приводится к читабельному виду.
Это исключает проблемы с версткой и безопасностью.
Шаблоны и кастомизация
Плагин использует собственные шаблоны:
- для формы редактирования товара;
- для вывода блока на странице товара.
Они полностью изолированы от стандартных шаблонов Market PRO и могут быть переопределены через систему шаблонов Cotonti без изменения логики плагина.
Конфигурация плагина
Через панель управления доступны следующие параметры:
- максимальное количество рекомендуемых тем;
- количество результатов в AJAX-поиске;
- длина выводимого описания;
- путь к изображению-заглушке.
Все параметры валидируются и имеют безопасные значения по умолчанию.
Локализация
Плагин полностью поддерживает языковые файлы. Все строки интерфейса вынесены в language-файл, включая:
- настройки;
- заголовки блоков;
- подсказки;
- уведомления.
Это позволяет использовать плагин в мультиязычных проектах без правок кода.
Совместимость и требования
Плагин официально требует:
- Cotonti Siena 0.9.26+;
- модуль Market PRO версии 5 и выше;
- модуль Forums;
- PHP 8.4+;
- MySQL 8.0+.
Плагин Attacher не является обязательным, но расширяет функциональность.
Итоговая оценка
Featured Topics Market — это архитектурно корректный, изолированный и функционально завершенный плагин, решающий конкретную задачу интеграции форума и товарных карточек. Он:
- не нарушает ядро Cotonti;
- не дублирует данные;
- корректно работает с правами;
- масштабируется настройками;
- безопасен с точки зрения данных;
- ориентирован на реальные сценарии использования.
Плагин особенно полезен для проектов, где форум играет активную роль в поддержке и продвижении товаров, а также для сообществ, ориентированных на взаимодействие пользователей вокруг коммерческого контента.
Постоянная ссылка на актуальный исходный код репозитория плагина на GitHub.