Загрузчик плагина (Plugin loader) в Cotonti Siena CMF

Подробный разбор самой концепции инициализации плагинов и анализ файла загрузчика (system/plugin.php). Изучаем процесс загрузки расширений, что бы понимать как создавать свои новые плагины для Cotonti.

Опубликовано в: Cotonti Siena CMF

Обзор загрузчика и Введение в систему плагинов Cotonti

Подробный разбор самой концепции инициализации плагинов и анализ файла загрузчика (system/plugin.php). Изучаем процесс загрузки расширений, что бы понимать как создавать свои новые плагины для Cotonti.

Загрузчик плагинов в Cotonti: архитектура, принципы работы и рекомендации по разработке

Часть 1. Обзор загрузчика плагинов в Cotonti

Cotonti — это гибкая CMS, позволяющая расширять функциональность сайта через плагины. Сердцем этого расширения является система загрузки и инициализации плагинов, обеспечивающая безопасную работу с данными, шаблонами и ресурсами. Загрузчик плагинов выполняет несколько ключевых задач: обработку входящих параметров, проверку прав пользователя, подключение необходимых файлов, подготовку данных для шаблонов и вывод контента.

1.1 Цель загрузчика

Загрузчик плагинов отвечает за:

  1. Определение, какой плагин или объект нужно показать пользователю (плагин как полноценная страница, popup или отдельный объект через POST/GET-запрос).
  2. Обеспечение безопасности за счет фильтрации входных параметров.
  3. Проверку существования необходимых файлов и директорий плагина.
  4. Проверку прав пользователя (чтение, запись, администрирование).
  5. Подключение языковых файлов, ресурсов и функционала плагина.
  6. Подготовку данных для шаблона (хлебные крошки, заголовок, подзаголовок, тело контента).
  7. Правильный вывод контента — через XTemplate или напрямую, в зависимости от режима.

Другими словами, загрузчик — это «сердце» любого плагина, через него проходят все запросы, связанные с расширениями.

1.2 Работа с параметрами

В Cotonti плагин может быть вызван разными способами:

  • Через URL с параметром e, что означает стандартный плагин.
  • Через параметр o, что указывает на popup или отдельный объект.
  • Через параметр r, чаще всего используемый для POST-запросов или внутренних вызовов.

Каждый параметр проходит строгую фильтрацию для исключения опасного ввода, включая XSS и инъекции. Система оставляет только допустимые символы (латиницу и подчёркивания), что гарантирует безопасность работы с плагинами.

Эта схема позволяет одному загрузчику обрабатывать множество типов вызовов плагинов без дублирования логики. Разделение по типам (e, o, r) упрощает адаптацию к современным AJAX-запросам и стандартным URL, а также к legacy-режиму совместимости старых плагинов.

1.3 Контроль доступа

Загрузчик проверяет права пользователя для каждого плагина. Cotonti различает три уровня доступа:

  • Чтение (view) — возможность просматривать контент плагина.
  • Запись (write) — возможность изменять данные плагина.
  • Администратор (admin) — полный контроль, включая изменение конфигурации плагина и управление доступом.

Если пользователь не имеет права чтения, доступ блокируется, и система отображает страницу с ошибкой 403 или 404. Такая схема делает плагины безопасными и предотвращает утечку данных.

1.4 Подключение файлов плагина

Каждый плагин в Cotonti состоит минимум из трёх обязательных компонентов:

  1. Языковой файл — содержит локализацию интерфейса.
  2. Ресурсы — CSS, JS, дополнительные данные.
  3. Функции — основной функционал плагина.

Загрузчик проверяет наличие этих файлов и подключает их через require_once, чтобы избежать дублирования и ошибок undefined function. Этот подход гарантирует, что весь функционал плагина доступен до начала генерации контента.

1.5 Подготовка данных для шаблона

После загрузки файлов, система готовит переменные для шаблона:

  • Хлебные крошки, показывающие путь навигации.
  • Заголовок и подзаголовок страницы.
  • Основное тело контента.

При этом учитываются разные режимы: стандартная страница, popup или отдельный объект. Для стандартных страниц используется объект XTemplate, который принимает переменные и рендерит HTML. Для popup включаются HTTP-заголовки и отдельная обработка параметров (например, c1 и c2), а контент выводится без стандартного хедера и футера.

1.6 Особенности legacy-режима

Cotonti поддерживает устаревшие плагины и шаблоны через legacy-режим. В этом режиме переменные и теги дублируются, чтобы старые шаблоны продолжали корректно работать. Например, старые темы могут использовать {PLUGIN_BODY} вместо {BODY}. Загрузчик автоматически дублирует значения, чтобы обеспечить совместимость.

1.7 Вывод контента

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

Эта схема позволяет одинаково работать как со старой, так и с новой архитектурой Cotonti, поддерживая плагины разных поколений.

 

3 минут чтения Sodium Carbonate

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

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

webitproff

Оффлайн

Sodium Carbonate

Последняя авторизация: 13.06.2026 11:30

  • Страница размещена: 10.03.2026 11:22
  • Последнее обновление: 11.03.2026 04:14

Связанные статьи

Хуки в Cotonti. Функция cot_getextplugins

Хуки в Cotonti. Функция cot_getextplugins

Этот код представляет собой функцию cot_getextplugins, которая возвращает список плагинов,
Хуки (или перехват управления)

Хуки (или перехват управления)

Хуки (или перехват управления) 1. Что такое Хуки? Хук (от англ. hook) это специальное место в
Hook (хук в cotonti)

Hook (хук в cotonti)

Hook (хук в cotonti.) Что такое хуки и как их использовать в котонти. Что такое Hook? В переводе с