Плагин дерева категорий - Tree Cats Page для Cotonti

Профессиональный плагин выводит динамическое дерево категорий и рубрик статей модуля Page, поддержка i18n, blacklist, кастомные шаблоны раскрывающегося меню структуры блогов. Подробное руководство по установке и настройке.

Опубликовано в: Модули и Плагины для Cotonti

Плагин обновился 19.02.2026. 

Сейчас плагин позволяет создавать дополнительный пользовательский шаблоны как по своей структуре, так и по именованию, предоставляя полную гибкость в использовании там, где именно вам нужно вывести дерево рубрик и категорий статей сайта, и именно в таком виде, как вы сверстаете свой пользовательский шаблон. 

 

Плагин Tree Cats Page для Cotonti Siena 0.9.26+

Профессиональное техническое руководство (Теория + Практика)
Версия: 1.0
Совместимость: Cotonti Siena 0.9.26+
PHP: 8.4+


ЧАСТЬ I — АРХИТЕКТУРА, КОНЦЕПЦИЯ И ПРИНЦИПЫ ПРОЕКТИРОВАНИЯ (БЕЗ КОДА)

1. Введение

Tree Cats Page — это структурный плагин для модуля Page в системе управления контентом Cotonti Siena. Его задача — программно формировать и отображать иерархическое дерево категорий страниц в любом месте шаблонов сайта.

В отличие от стандартных навигационных блоков категорий, плагин:

  • Строит полноценное рекурсивное дерево
  • Поддерживает исключение категорий (черный список)
  • Интегрируется с системой прав доступа Cotonti
  • Учитывает мультиязычность (i18n)
  • Позволяет полностью переопределять шаблоны вывода
  • Четко разделяет логику и представление

Данный документ разделен на две профессиональные части:

  1. Теоретическая (архитектура и концепция)
  2. Практическая (реализация и примеры кода)

Руководство предполагает, что читатель знаком со структурой категорий Cotonti, системой шаблонов и архитектурой тем.


2. Постановка задачи

Модуль Page хранит категории в иерархической структуре:

structure.page

Однако большинство стандартных тем:

  • Отображают только категории верхнего уровня
  • Используют жестко прописанные ссылки
  • Не поддерживают рекурсивный вывод
  • Не предоставляют гибкого доступа к метаданным структуры

Для проектов следующих типов:

  • Контентные маркетплейсы
  • Блоговые платформы
  • Базы знаний
  • Новостные порталы
  • Иерархические публикационные системы

Требуется полноценное динамическое дерево категорий.

Tree Cats Page решает эту задачу через:

  • Универсальный генератор дерева
  • Шаблонную систему вывода
  • Интеграцию с Bootstrap 5.3 (offcanvas)
  • Поддержку структурных метаданных

3. Архитектурный обзор

3.1 Логические уровни

Архитектура плагина построена по принципу разделения ответственности:

УровеньНазначение
Логика ядраЧтение structure.page и фильтрация
Уровень прав доступаПроверка прав на чтение
URL-слойГенерация ссылок через cot_url()
Шаблонный слойОтрисовка через XTemplate
ТемаВстраивание offcanvas-блока
КонфигурацияОбработка черного списка

Такой подход обеспечивает:

  • Предсказуемость поведения
  • Поддерживаемость
  • Независимость от темы
  • Масштабируемость

4. Обработка структуры категорий

Плагин работает с:

structure.page

Каждая категория содержит:

  • Код
  • Путь
  • Заголовок
  • Описание
  • Иконку (если задана)
  • Количество страниц
  • Родительскую категорию
  • Дополнительные поля (extra fields)

Алгоритм построения дерева включает:

  1. Определение корневых элементов
  2. Рекурсивный обход
  3. Формирование дочерних узлов
  4. Фильтрацию по правам доступа
  5. Исключение по черному списку
  6. Применение локализации

На выходе формируется структурированный иерархический массив.


5. Модель прав доступа

Дерево отображается только если:

  • Активен модуль Page
  • Активен плагин
  • Пользователь имеет право R (read)

Плагин не изменяет систему безопасности Cotonti.
Он полностью полагается на стандартную модель прав доступа.


6. Черный список категорий

Параметр конфигурации:

blacktreecatspage

Позволяет указать через запятую коды категорий, которые не должны отображаться.

Это позволяет:

  • Скрывать системные разделы
  • Исключать технические категории
  • Ограничивать структуру навигации

Фильтрация происходит до этапа рендеринга.


7. Поддержка мультиязычности (i18n)

Плагин автоматически использует:

  • Локализованные заголовки
  • Локализованные описания
  • Мультиязычную структуру (если включена)

Отдельная система перевода не требуется.


8. Стратегия шаблонов

Основной шаблон:

treecatspage.page.tree.tpl

Однако можно создавать:

  • Боковые шаблоны (sidebar)
  • Подвальные (footer)
  • Мега-меню
  • Мобильные версии
  • Специализированные блоки

Выбор шаблона происходит динамически.

Это делает плагин пригодным для сложных проектов.


9. Интеграция с Bootstrap 5.3

Интерфейс плагина основан на Bootstrap 5.3.

Причины выбора:

  • Поддержка offcanvas
  • Поддержка collapse
  • Доступность (ARIA)
  • Минимальный JS

Важно: Bootstrap должен быть подключен в теме.


10. Философия интеграции с темой

Плагин не привязан к конкретной теме.

Однако содержит готовую интеграцию для темы 2waydeal.

Для других тем:

  • Нужно подключить offcanvas-блок
  • Добавить кнопку-триггер
  • Убедиться в наличии Bootstrap

11. Динамическая маршрутизация шаблонов

Вызов:

cot_build_structure_page_tree('', '', 0, 'sidebar')

Позволяет использовать альтернативный шаблон:

treecatspage.page.tree.sidebar.tpl

Возможные варианты:

КонтекстШаблон
sidebartreecatspage.page.tree.sidebar.tpl
footertreecatspage.page.tree.footer.tpl
headertreecatspage.page.tree.header.tpl

12. Рекомендации по применению

Использовать при:

  • Многоуровневых блогах
  • Маркетплейсах
  • Документационных порталах
  • Корпоративных сайтах со сложной структурой

Не требуется для:

  • Одностраничных сайтов
  • Плоской структуры без подкатегорий

ЧАСТЬ II — ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ И ПРИМЕРЫ КОДА


1. Установка плагина

Скачайте архив плагина из официального репозитория.

Загрузите папку:

/plugins/treecatspage/

В директорию плагинов вашего сайта.


2. Интеграция в тему 2waydeal

В файле:

/themes/2waydeal/header.tpl

Добавьте:

{FILE "{PHP.cfg.themes_dir}/{PHP.cfg.defaulttheme}/inc/header/treecatspageLeftOffcanvas.tpl"}

Затем замените статические ссылки категорий на блок-триггер.


3. Интеграция в тему CleanCot

Если используется тема CleanCot:

Откройте:

/themes/cleancot/inc/header/treecatspageLeftOffcanvas.tpl

Измените контейнер:

<div class="offcanvas offcanvas-start bg-costum-dgrey"
     tabindex="-1"
     id="treecatspageLeftOffcanvas"
     aria-labelledby="treecatspageLeftOffcanvasLabel">

Репозиторий темы:
cot-CleanCot


4. Проверка Bootstrap 5.3

В файле ресурсов темы должны присутствовать строки:

Resources::addFile('lib/bootstrap/css/bootstrap.min.css');
Resources::linkFileFooter('lib/bootstrap/js/bootstrap.bundle.min.js');

Без этого offcanvas работать не будет.


5. Файл functions.custom.php

Проверьте наличие:

/system/functions.custom.php

Если отсутствует — загрузите.

В файле:

/datas/config.php

Убедитесь:

$cfg['customfuncs'] = true;

6. Активация в админ-панели

Administration → Extensions → Tree Cats Page → Install

Настройте blacklist при необходимости.


7. Логика загрузки шаблона

$tpl_ExtCode          = 'treecatspage';
$tpl_PartExt          = 'page';
$tpl_PartExtSecond    = 'tree';
$tpl_PartCostumTpl    = $template;

$extTplFile = cot_tplfile(
    [
        $tpl_ExtCode,
        $tpl_PartExt,
        $tpl_PartExtSecond,
        $tpl_PartCostumTpl
    ],
    'plug',
    true
);

$t1 = new XTemplate($extTplFile);

8. Создание бокового шаблона

Создайте:

/themes/yourtheme/plugins/treecatspage/treecatspage.page.tree.sidebar.tpl

Вызов в шаблоне:

<!-- IF {PHP|function_exists('cot_build_structure_page_tree')} AND {PHP|cot_auth('page', 'any', 'R')} -->
    {PHP|cot_build_structure_page_tree('', '', 0, 'sidebar')}
<!-- ENDIF -->

9. Несколько вариантов шаблонов

Можно создать:

  • treecatspage.page.tree.footer.tpl
  • treecatspage.page.tree.mega.tpl
  • treecatspage.page.tree.mobile.tpl

10. Пример кнопки открытия offcanvas

<li class="nav-item">
  <a class="nav-link"
     type="button"
     data-bs-toggle="offcanvas"
     data-bs-target="#treecatspageLeftOffcanvas"
     aria-controls="treecatspageLeftOffcanvas">
      <i class="fa-regular fa-newspaper me-2"></i>
      Publications
  </a>
</li>

11. Рекомендации по безопасности

  • Не удаляйте проверки cot_auth()
  • Не хардкодьте ссылки
  • Используйте cot_url()
  • Не отключайте права доступа

12. Производительность

При большой структуре:

  • Используйте blacklist
  • Не выводите дерево на всех страницах без необходимости
  • Применяйте кэширование

13. Итог

Tree Cats Page — это профессиональный инструмент построения динамического дерева категорий для:

Cotonti Siena 0.9.26+

Он обеспечивает:

  • Рекурсивную иерархию
  • Гибкую интеграцию
  • Разделение логики и представления
  • Расширяемость
  • Совместимость с Bootstrap 5.3

Для проектов со сложной структурой контента данный плагин значительно расширяет возможности стандартного модуля Page.


Автор: webitproff
Дата: 19/02/2026
Версия: 1.0/2

 

 



Рейтинг на основе отзывов:
Звезд получено: 0
Oтзывов всего: 0
Средняя оценка: 0
4 минут чтения
Владелец: Carbonate Sodium

Отзывы к товарам

Отзывов пока нет


Добавить в корзину

К этому товару прикреплен файл для загрузки.

cot-treecatspage-20260219.zip

Количество скачиваний файла 6

 

Категория расширения
Администрирование и управление, Блоги, новости, статьи, Меню, дизайн и внешний вид, Навигация и структура сайта, Утилиты и инструменты
Доступность
Бесплатно

Автор контента

webitproff

Оффлайн

webitproff

Последняя авторизация: 20.07.2026 00:04

  • Чем могу помочь?

    Оказываю весь спектр услуг по CMF Cotonti. Разработка открытых и закрытых корпоративных интернет порталов, небольших социальных сетей, торговые площадки, маркетплейсы, биржи фриланса, каталоги товаров оптовых поставщиков, интернет-магазин под заказ, чтобы делать совместные покупки и групповые совместные продажи от имени нескольких продавцов.

  • Разработки на GitHub бесплатно
    • 04.12.2025 10:50
    • 19.02.2026 12:55
    • Язык:

    Рекомендуемые товары и услуги

    Установка, интеграция и адаптация плагинов под Cotonti CMF

    Установка, интеграция и адаптация плагинов под Cotonti CMF

    профессиональные услуги по установке, глубокой интеграции и адаптации плагинов под Cotonti CMF, с

    Витрина Market PRO

    CMS, Скрипт и Движок - веб сайта онлайн-витрины, интернет магазина инфопродуктов и цифровых товаров. Разные цены в разных валютах на товар. Онлайн-оплата в криптовалюте за товары и услуги.