Рекомендуемые Статьи в Market PRO, плагин для Cotonti. На странице товара, показываем нужные блоги и страницы, которые назначаем, при редактировании карточки этого товара.
Введение и обзор
Featured Articles in Market PRO — это расширение для Cotonti Siena, предназначенное для ручной привязки статей (модуля Page) к товарам модуля Market. Плагин решает практическую задачу: вывод релевантных, заранее отобранных материалов в карточке товара, усиливая контентную составляющую, SEO-ценность и конверсию.
В отличие от автоматических рекомендаций по категориям или тегам, здесь используется явная редакторская логика: администратор или автор товара сам выбирает, какие статьи считать рекомендуемыми. Это делает плагин особенно полезным для маркетплейсов, витрин услуг, SaaS-каталогов и контент-коммерческих проектов.
Расширение глубоко интегрировано в экосистему Cotonti, использует стандартные хуки, шаблоны, права доступа, а также корректно взаимодействует с дополнительными плагинами, такими как attacher и i18n.
Концепция и архитектура решения
В основе плагина лежит простая и масштабируемая идея:
между товаром Market и статьями Page создаётся отдельная таблица связей.
Каждая связь:
- однозначна (одна пара «товар → статья»),
- упорядочена (задаётся порядок вывода),
- не зависит от категории, тэгов или структуры сайта.
Это означает, что:
- один товар может иметь несколько рекомендованных статей;
- одна статья может быть рекомендована для разных товаров;
- порядок вывода всегда контролируется вручную.
Архитектурно плагин разделён на три логических слоя:
- Слой хранения данных — таблица связей.
- Административный слой — интерфейс выбора статей при редактировании товара.
- Публичный слой — вывод блока рекомендаций в карточке товара.
Структура данных и хранение связей
Для хранения связей используется отдельная таблица базы данных.
Каждая запись содержит:
- идентификатор товара,
- идентификатор статьи,
- порядковый номер.
Наложено уникальное ограничение на пару «товар–статья», что полностью исключает дубли. Дополнительные индексы обеспечивают быструю выборку как при редактировании, так и при отображении карточки товара.
При удалении товара плагин автоматически очищает все связанные записи, предотвращая появление «висячих» связей.
Интеграция в административную часть (Market Edit)
Общая логика
При редактировании товара в модуле Market плагин добавляет отдельный визуальный блок с селекторами рекомендуемых статей. Количество доступных слотов определяется конфигурацией плагина.
Каждый слот:
- представляет собой визуальный селектор,
- хранит выбранный ID статьи в скрытом поле,
- полностью синхронизирован с серверной логикой.
AJAX-поиск статей
Поиск статей реализован через AJAX и работает по заголовкам страниц.
Ключевые особенности:
- минимальная длина запроса — 2 символа;
- выборка только опубликованных страниц;
- исключение текущей редактируемой страницы;
- для не-администраторов — строгая фильтрация по владельцу.
Это решение одновременно:
- защищает от ошибок,
- упрощает интерфейс,
- исключает утечки чужого контента.
Права доступа
Плагин строго следует системе прав Cotonti:
- администратор видит и может выбрать любые статьи;
- обычный пользователь — только собственные.
Таким образом, логика полностью совместима с multi-author проектами.
Сохранение и обновление связей
После сохранения товара:
- все старые связи удаляются,
- создаётся новый набор связей в соответствии с текущим выбором.
Дополнительно выполняются проверки:
- исключается выбор самого себя;
- исключаются дубли;
- проверяется существование и статус статьи;
- учитывается лимит количества рекомендаций.
Порядок сохранения соответствует порядку слотов в форме, что гарантирует предсказуемый вывод.
Публичный вывод в карточке товара
Точка входа и условия вывода
Плагин подключается через стандартный хук вывода Market и формирует отдельный шаблонный тег. Блок рекомендаций выводится только если:
- плагин активен,
- для товара существуют связанные статьи.
Это позволяет гибко управлять отображением прямо в шаблоне темы.
Работа с многоязычностью (i18n)
Если активен плагин i18n, Featured Articles in Market PRO:
- подгружает переводы самого товара,
- подгружает переводы рекомендованных статей,
- корректно обрабатывает переводы категорий.
При отсутствии перевода используется дефолтная версия контента, что исключает «пустые» блоки и ошибки отображения.
Формирование контента карточки рекомендации
Для каждой статьи формируется полноценная карточка:
- заголовок,
- описание,
- категория,
- изображение,
- ссылка.
Текст и описание
Если у статьи задано краткое описание — используется оно.
Если нет — берётся основной текст, очищается от HTML, нормализуется и аккуратно обрезается до заданной длины.
Это обеспечивает:
- чистый текст без мусора,
- корректные превью,
- стабильный внешний вид блока.
Работа с изображениями
Изображения извлекаются по следующему приоритету:
- первое прикреплённое изображение через плагин attacher;
- глобальная заглушка из настроек плагина;
- стандартная заглушка расширения.
Таким образом, карточка всегда имеет визуальный якорь, даже если статья не содержит медиа.
Шаблоны и кастомизация
Плагин использует собственные шаблоны:
- для формы редактирования товара;
- для публичного списка рекомендаций.
Они полностью изолированы от ядра и легко переопределяются в теме сайта.
В шаблонах предусмотрены:
- условные блоки,
- адаптивная верстка,
- аккуратные hover-эффекты,
- семантически корректная структура.
Производительность и безопасность
Плагин:
- использует подготовленные запросы,
- кэширует данные страниц,
- минимизирует количество SQL-запросов,
- не выполняет лишнюю логику при отсутствии связей.
Все входные данные фильтруются стандартными средствами Cotonti, а вывод экранируется, что исключает XSS и логические уязвимости.
Практические сценарии использования
Плагин идеально подходит для:
- привязки инструкций к товарам;
- отображения кейсов и обзоров;
- SEO-усиления карточек;
- повышения времени на странице;
- ручных подборок «рекомендуем прочитать».
Особенно эффективен в проектах, где контент — часть воронки продаж.
Выводы и итоги
Featured Articles in Market PRO — это зрелое, продуманное и профессионально реализованное расширение для Cotonti Siena.
Ключевые достоинства:
- строгая архитектура и чистая логика;
- полная интеграция с Cotonti API;
- поддержка прав доступа и многоязычности;
- удобный редакторский интерфейс;
- высокая гибкость и кастомизируемость.
Плагин не навязывает автоматических решений, а даёт редактору контроль — именно то, что требуется для качественных коммерческих и контентных проектов.
Постоянная ссылка на актуальный исходный код репозитория плагина на GitHub.