Загрузчик плагина (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

Content author

webitproff

Offline

Sodium Carbonate

Last logged: 2026-09-01 22:41

About me briefly
Support and development of web projects on the CMF Cotonti: private messengers via the website, open and closed small social networks, trading platforms and marketplaces, freelance and services exchange portal, catalogs of goods from wholesale suppliers, dropshipping platforms, online stores, and much more.
View developments and download
Public portfolio of my works and developments
Telegram for messages
@webitproff
Telegram channel
@s/aBuyFILE
  • Page published: 2026-03-10 11:22
  • Last update: 2026-03-11 04:14

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

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 - это универсальный плагин, который позволяет прикреплять к записям на сайте любые файлы, в том числе