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

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

Filed under: 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 minutes read Sodium Carbonate

Comments (0)

No comments yet
Only registered users can post new comments

Similar pages

Файл plugin.php в Cotonti
1 Основное назначение кода в файле plugin.php в системной папке Cotonti CMF — это обработка плагинов в рамках фреймворка.
AjaxPopover plugin Плагин
2 AjaxPopover plugin Плагин для фриланс-биржи на Cotonti При наведении на ссылку, всплывает доп. информация, например, на
User Blog • 2020-07-17 05:15 webitproff
Fast Passrecover plugin Плагин
3 Fast Passrecover plugin Плагин для фриланс-биржи на Cotonti Пропускает этап подтверждения смены пароля Данный плагин
User Blog • 2020-07-17 05:15 webitproff
reCaptcha API 2.0 plugin
4 reCaptcha API 2.0 plugin для фриланс-биржи на Cotonti Стильная Google reCaptcha теперь и для Cotonti Порядок
User Blog • 2020-07-17 05:15 webitproff
Настройка плагина Mavatars на Cotonti
5 Mavatars - это универсальный плагин, который позволяет прикреплять к записям на сайте любые файлы, в том числе