Featured Topics from Forums in Article
Обзор и руководство по применению плагина для Cotonti
1. Назначение плагина и решаемая задача
Плагин Featured Topics from Forums in Item of Article предназначен для жёсткой, управляемой связки контентных материалов модуля Page (статей) с темами форума модуля Forums в CMS Cotonti.
Его ключевая задача — позволить редактору или администратору вручную прикреплять выбранные темы форума к конкретной статье и выводить их на странице статьи в виде отдельного смыслового блока.
Плагин не занимается автоматическим подбором, рекомендациями по алгоритмам, релевантностью или аналитикой.
Он реализует осознанное редакционное связывание: статья → выбранные темы форума.
Это инструмент редактора, а не рекомендательный движок.
2. Архитектурная модель и принцип работы
2.1. Тип связи данных
Плагин реализует отношение «один ко многим»:
- Одна статья
- Несколько прикреплённых тем форума
Связь хранится в отдельной таблице базы данных и не вмешивается в структуру стандартных таблиц Cotonti.
Каждая связь содержит:
- идентификатор статьи,
- идентификатор темы форума,
- порядок отображения темы в списке.
Повторяющиеся связи между одной и той же статьёй и темой невозможны на уровне БД.
2.2. Изоляция и безопасность данных
- При удалении статьи все связанные записи автоматически удаляются.
- При обновлении статьи список связей полностью пересобирается.
- Плагин не изменяет данные самих тем форума и статей.
- Валидация проводится на уровне:
- существования темы,
- состояния темы (только активные),
- прав пользователя.
3. Требования и совместимость
Плагин жёстко завязан на стандартные модули Cotonti:
Дополнительно:
- Поддерживается работа с плагином Attacher, если он активен.
- Используется интерфейс Select2 через системные ресурсы Cotonti.
- Совместим с Cotonti 0.9.26 и PHP 8.4+.
Без модулей Page или Forums плагин работать не будет.
4. Роли пользователей и разграничение прав
4.1. Администратор
Администратор обладает полным контролем:
- может прикреплять любые темы форума к любой статье;
- видит все темы в AJAX-поиске;
- не ограничен авторством тем.
4.2. Обычный пользователь (автор статьи)
Для обычных пользователей действуют строгие ограничения:
- в поиске отображаются только темы, созданные этим пользователем;
- невозможно прикрепить чужую тему;
- невозможно обойти ограничение через ручную подмену данных.
Таким образом, плагин соблюдает модель авторских прав Cotonti.
5. Интерфейс редактирования статьи
5.1. Встраивание в форму редактирования
Плагин добавляет в форму редактирования статьи отдельный логический блок:
- заголовок блока задаётся языковым файлом;
- блок отображается только при наличии прав на запись;
- количество строк строго соответствует настройке плагина.
Каждая строка — это одна потенциальная рекомендуемая тема форума.
5.2. Выбор тем форума
Для выбора используется AJAX-поиск:
- поиск начинается с ввода минимум двух символов;
- используется асинхронный запрос;
- результаты сортируются по дате обновления темы;
- количество результатов ограничено настройками.
Выбор осуществляется через визуальный селектор без прямого ввода идентификаторов.
Интерфейс не допускает ручной подмены значений без вмешательства в HTML.
5.3. Ограничение количества тем
Максимальное количество прикрепляемых тем:
- задаётся в конфигурации плагина;
- строго контролируется при сохранении;
- превышение физически невозможно.
Порядок тем определяется порядком строк в форме редактирования.
6. Сохранение и обработка данных
6.1. Механика сохранения
При сохранении статьи:
- Все существующие связи удаляются.
- Полученные данные валидируются.
- Проверяется:
- существование темы;
- её активное состояние;
- отсутствие дубликатов.
- Данные сохраняются с последовательным порядком.
6.2. Защита от ошибок
Плагин автоматически игнорирует:
- пустые значения,
- дубликаты,
- несуществующие темы,
- темы в неактивном состоянии.
7. Вывод на странице статьи
7.1. Условия отображения
Блок рекомендуемых тем выводится только если:
- плагин активен;
- у статьи есть прикреплённые темы;
- темы находятся в активном состоянии.
Если условий нет — шаблон не загружается вообще, что исключает лишнюю нагрузку.
7.2. Состав выводимой информации
Для каждой темы выводятся:
- заголовок темы;
- краткое описание или превью;
- категория форума;
- количество сообщений;
- количество просмотров;
- имя последнего автора;
- дата последнего обновления;
- изображение (при наличии).
Все данные берутся напрямую из таблицы тем форума.
7.3. Работа с изображениями
Логика изображений строго определена:
- используется первое изображение из первого сообщения темы;
- если активен Attacher — берётся прикреплённый файл;
- если изображения нет — используется заглушка из настроек;
- путь к заглушке задаётся администратором.
Плагин не генерирует изображения и не модифицирует файлы.
8. Обработка текста и описаний
Описание темы формируется по следующему приоритету:
- Поле описания темы.
- Превью первого сообщения.
Текст:
- очищается от HTML;
- приводится к плоскому виду;
- обрезается строго по лимиту символов из настроек.
Никакой автоматической генерации или дополнения текста не производится.
9. Поддержка мультиязычности
Плагин не реализует собственную мультиязычность, но:
- корректно использует структуру форумов Cotonti;
- отображает название категории на текущем языке сайта;
- при отсутствии перевода показывает код категории.
Таким образом, он полностью совместим с мультиязычной структурой форумов.
10. Сценарии практического применения
10.1. Статьи + обсуждения
Классический сценарий:
- статья как основной материал;
- прикреплённые темы — обсуждение, вопросы, дополнения.
10.2. Документация и поддержка
- статья — инструкция или мануал;
- темы форума — вопросы пользователей, отчёты об ошибках.
10.3. Образовательные проекты
- статья — урок или лекция;
- темы — обсуждение заданий и решений.
10.4. Коммерческие и контент-проекты
- статья — обзор продукта;
- темы — отзывы, вопросы, опыт использования.
11. Ограничения и границы ответственности
Плагин не делает:
- автоматический подбор тем;
- анализ релевантности;
- сортировку по популярности;
- SEO-оптимизацию;
- кэширование данных.
Он делает только то, что явно заложено в логике:
связывает статьи с выбранными темами форума и выводит их.
12. Итоговая оценка
Featured Topics from Forums in Article — это:
- чёткий редакционный инструмент;
- прозрачная логика без скрытых механизмов;
- строгая работа с правами доступа;
- корректная интеграция с Cotonti.
Плагин идеально подходит для проектов, где форум и статьи — единая контентная система, а не разрозненные модули.
Это не «умный» плагин.
Это контролируемый, предсказуемый и профессиональный инструмент.
`page.edit.tpl`
```
<!-- IF {PHP|cot_plugin_active('featuredtopicspage')} -->
<!-- IF {PHP|cot_auth('plug', 'featuredtopicspage', 'W')} -->
{FEATURED_FR_TOPIC_PAGE_EDIT_TOPIC}
<!-- ENDIF -->
<!-- ENDIF -->
<hr>
```
`page.tpl`
```
<!-- IF {PHP|cot_plugin_active('featuredtopicspage')} AND {FEATURED_FR_TOPIC_PAGE_TOPICS_TRUE} -->
{FEATURED_FR_TOPIC_PAGE_TOPICS}
<!-- ENDIF -->
```
Постоянная ссылка на актуальный исходный код репозитория плагина на GitHub.