Что это такое?
Multicat — это плагин, который позволяет одной и той же статье находиться сразу в нескольких категориях на сайте.
Обычно в Cotonti страница может быть только в одной категории (например, «Новости» или «Блог»). С Multicat одна статья может одновременно быть и в «Новости», и в «Акции», и в «Обзоры».
Скачать плагин бесплатно с репозитория на GitHub.
Как это работает?
- При установке плагин создаёт дополнительную таблицу в базе данных. В ней хранится информация, к каким категориям относится каждая статья.
- Когда вы редактируете статью, появляется удобный список категорий (мультивыбор). Можно выбрать сразу несколько.
- На сайте статья автоматически показывается во всех выбранных категориях.
Зачем это нужно?
- Удобство для посетителей — пользователю не нужно искать статью только в одной рубрике. Он найдёт её в любой подходящей категории.
- SEO (поисковая оптимизация) — статья получает больше точек входа для поисковых систем. Это значит, что больше людей смогут найти её через разные разделы сайта. При этом дубликаты URL не создаются: у статьи всегда остаётся один основной адрес, а категории просто выступают как дополнительные «точки входа».
- Гибкость — удобно, когда статья подходит под несколько тем. Например, «Обзор телефона» можно разместить в «Новости», «Гаджеты» и «Обзоры».
Как пользоваться?
- Установите плагин через админку Cotonti.
- При добавлении или редактировании статьи отметьте галочками категории, в которых она должна появиться.
- Готово! Теперь материал будет отображаться сразу в нескольких разделах.
Преимущества
- Простая установка и работа.
- Не ломает старые статьи: если у статьи только одна категория — всё остаётся, как раньше.
- Подходит для любых проектов — блога, новостника, интернет-магазина.
Итог: Multicat делает ваш сайт удобнее для посетителей и полезнее для поисковых систем. Статьи становятся более заметными, а управление ими — гибче.
Плагин Multicat для Cotonti Siena. Информация для администратора
Описание плагина
Плагин Multicat предназначен для модуля Page в CMF Cotonti Siena. Он позволяет назначать страницы сразу в несколько категорий, расширяя стандартные возможности системы, где страница может принадлежать только одной категории. Это полезно для сайтов с сложной структурой контента, где материалы могут относиться к нескольким темам одновременно.
- Ключевые особенности:
- Хранение связей категорий в отдельной таблице
cot_page_multicats с использованием structure_id для идентификации категорий. - Автоматическая миграция существующих категорий при установке.
- Интеграция с формами добавления/редактирования страниц через чекбоксы.
- Отображение множественных категорий в админ-панели и списках страниц.
- Поддержка фильтрации страниц по категориям в списках, учитывая мультикатегории.
Плагин разработан для Cotonti Siena версии 0.9.26 и выше, с поддержкой PHP 8.4+ и MySQL 8.0+. Он не требует дополнительных библиотек и использует встроенные механизмы Cotonti (хуки, структура, SQL-запросы).
Принципы работы
Плагин работает на основе хуков Cotonti, расширяя функциональность модуля Page без изменения кода системы. Основные принципы:
- Хранение данных:
- Используется таблица
cot_page_multicats для хранения связей между страницами (pcat_page_id) и категориями (pcat_cat_id), где pcat_cat_id — это structure_id из таблицы cot_structure. - Это позволяет избежать дублирования данных и сохранять совместимость со стандартным модулем Page.
- При установке автоматически мигрируются существующие категории из
cot_pages (поле page_cat преобразуется в structure_id).
- Обработка категорий:
- Функции в
inc/multicat.functions.php позволяют получать, сохранять и отображать категории. - Категории выбираются через чекбоксы в формах добавления/редактирования страниц.
- Первая выбранная категория устанавливается как основная (
page_cat в cot_pages), остальные — в мультикатегориях. - В списках страниц (page.list) фильтр по категории учитывает как основную, так и дополнительные категории через подзапросы SQL.
- Интеграция с UI:
- Добавляются теги в шаблоны:
{PAGEFORM_CAT} для чекбоксов и {PAGEFORM_CAT_HINT} для подсказки. - В админ-панели отображается список категорий для каждой страницы.
- Языковой файл поддерживает русский язык, с возможностью добавления других.
- Безопасность и производительность:
- Все запросы используют подготовленные параметры для защиты от SQL-инъекций.
- Фильтрация по категориям оптимизирована с использованием индексов таблицы.
- Проверка прав доступа (
cot_auth) при отображении категорий в формах.
Плагин не влияет на производительность для сайтов с небольшим количеством страниц, но для крупных сайтов рекомендуется индексация таблицы cot_page_multicats.
Интеграция
Плагин интегрируется через стандартные хуки Cotonti. Нет необходимости модифицировать核心 файлы — все изменения происходят через плагинные файлы.
- Хуки, используемые в плагине:
global: Определение таблицы и загрузка языка.page.add.add.done: Сохранение категорий после добавления страницы.page.admin.loop: Отображение категорий в админ-списке.page.delete.first: Удаление связей перед удалением страницы.page.edit.update.import: Импорт и валидация категорий при редактировании.page.edit.tags: Генерация формы чекбоксов в редакторе.page.edit.update.done: Сохранение категорий после обновления.page.list.query: Фильтрация списка страниц по категории.
- Изменения в шаблонах:
- В файлы
page.edit.tpl и page.add.tpl добавьте {PAGEFORM_CAT} и {PAGEFORM_CAT_HINT} сразу после стандартного поля категории. - чтобы в page.admin.tpl в каждой строке (блок PAGE_ROW) выводился список мультикатегорий для текущей страницы, нужно добавить {ADMIN_PAGE_MULTICATS}, например после {ADMIN_PAGE_LOCAL_STATUS}.
- Совместимость:
- Работает с модулем Page без конфликтов.
- Если используются другие плагины на категории (например, для SEO), протестируйте на совместимость.
Инструкции по установке и использованию
Установка
- Скачайте плагин:
- Клонируйте репозиторий:
git clone https://github.com/webitproff/cot-multicat.git или скачайте ZIP.
- Установка через админ-панель Cotonti:
- Скопируйте папку
multicat в plugins/ вашего сайта. - В админ-панели перейдите в "Расширения" > "Установка" и установите плагин
multicat. - При установке автоматически создастся таблица
cot_page_multicats и мигрируются существующие категории.
- Настройка:
- В конфигурации плагина (
Админ > Расширения > Multicat > Конфигурация) включите опцию enabled (по умолчанию включена).
Использование
- Добавление/редактирование страницы:
- В форме страницы выберите несколько категорий через чекбоксы.
- Обязательно выберите хотя бы одну — иначе ошибка.
- Сохраните: категории сохранятся в БД.
- Просмотр:
- В админ-списке страниц увидите все категории через запятую.
- В списках страниц (на сайте) фильтр по категории покажет страницы из мультикатегорий.
- Удаление:
- При удалении страницы связи автоматически удаляются.
- Обновление/удаление плагина:
- Перед удалением: Сделайте бэкап БД.
- Удалите через админ-панель — таблица не удаляется автоматически (удалите вручную, если нужно).
Возможные проблемы и решения
- Ошибка "необходимо выбрать хотя бы одну категорию": Убедитесь, что выбрана категория в форме.
- Категории не отображаются: Проверьте права доступа (
cot_auth) и наличие structure_id в БД. - Конфликты с шаблонами: Убедитесь, что добавлены теги
{PAGEFORM_CAT} и {PAGEFORM_CAT_HINT}. - Миграция не сработала: Проверьте SQL-запрос в
setup/multicat.install.sql и выполните вручную.