Вам нужно добавить новый функционал в админку Wepps, но обычных списков недостаточно? Может быть, это сложная интеграция с внешним сервисом, инструмент для массовой обработки данных, или генератор отчётов. Стандартные средства не подходят — нужна кастомная логика с собственным интерфейсом.
А что если можно создать отдельный модуль в админке со своей навигацией, несколькими страницами и полным контролем над PHP-кодом? Именно для этого существуют системные расширения — мощный инструмент для добавления произвольного функционала в административную панель.
Системные расширения — это отдельные мини-приложения внутри админки. Давайте разберёмся, как их создавать и зачем они нужны.
Как устроен магазин расширений: аналогия для понимания
Представьте, что админка Wepps — это торговый центр, в котором есть разные отделы:
- Списки данных — обычные магазины с типовыми товарами (Товары, Новости, Контакты). У каждого стандартная витрина, одинаковый формат.
- Системные расширения — специализированные отделы с уникальным функционалом (банк, кинотеатр, медцентр). У каждого свой интерфейс, своя логика работы.
- Группы расширений — целые крылья торгового центра, объединяющие несколько отделов по тематике.
Или вспомните панель управления сервером:
- Обычные разделы — стандартные настройки (пользователи, файлы)
- Расширения — дополнительные модули (мониторинг, бэкапы, логи)
Суть в том, что системное расширение — это самостоятельный раздел админки с собственными страницами и логикой, а не просто таблица с данными.
Что такое Системное расширение? Гибкий модуль для админки
Системное расширение — это PHP-класс с набором файлов, который создаёт в админке отдельный раздел с произвольным функционалом. Его главная задача — предоставить интерфейс для операций, которые выходят за рамки стандартного CRUD.
Суперсилы системных расширений:
-
Произвольная логика. Можете писать любой PHP-код, обращаться к базе данных, API, файловой системе — без ограничений списков данных.
- На практике: создание резервных копий БД, импорт из Excel, интеграция с платёжными системами, генерация отчётов
-
Собственная навигация. Расширение может иметь несколько подразделов, каждый со своим URL и интерфейсом.
- На практике: "Резервирование" → "База данных", "Списки", "Файлы" — три отдельные страницы в рамках одного расширения
-
Многократное использование. Создаёте один раз, используете в любых проектах на Wepps.
- На практике: модуль работы с API можно скопировать на другой сайт без изменений
Где вы это видите в админке?
- Резервирование — создание бэкапов БД и файлов, восстановление данных
- Обработка данных — массовые операции над товарами, обновление цен
- Заказы — специализированный интерфейс управления покупками с кастомной логикой
- Загрузка в систему — импорт данных из внешних источников
Что такое Группа расширений? Логическое объединение
Группа расширений — это одна запись в списке s_ConfigExtensions, которая создаёт блок в админке с несколькими подразделами. Если расширение — это отдел, то группа — это название крыла торгового центра с указанием, какие именно отделы в нём находятся.
Суперсилы групп расширений:
- Структурирование интерфейса. Объединяете связанные функции под одной шапкой.
- Единая точка входа. Пользователь видит тематический раздел, а не набор разрозненных пунктов.
- Автоматическая навигация. Платформа сама создаёт меню из указанных подразделов.
Проще простого: Добавляете запись "Интеграции" с подразделами "API партнёров", "Синхронизация складов", "Обмен с 1С" — и в админке появляется готовый раздел с тремя страницами.
Поле "Навигация" (ENav): карта расширения
Это самое важное поле, которое определяет структуру расширения. Оно содержит список подразделов в специальном формате:
Название подраздела 1:::алиас1
Название подраздела 2:::алиас2
Название подраздела 3:::алиас3
Каждая строка — это отдельная страница в рамках расширения. Алиас становится частью URL: /_wepps/extensions/backup/database.html
Магия создания: пошаговая инструкция
Давайте создадим системное расширение "Отчёты" с тремя подразделами:
Шаг 1. Зайдите в список "Системные расширения"
Откройте админку (/_wepps/), найдите список "Системные расширения" в разделе "Настройки системы".
Шаг 2. Создайте новую запись
Нажмите "Добавить элемент" и заполните поля:
- Заголовок:
Отчёты - Ключ (Alias):
Reports(только латиница!) - Навигация (ENav):
По продажам:::sales По пользователям:::users По посещаемости:::traffic - Создать файлы расширения (CopyFiles):
1.0
Шаг 3. Сохраните запись
При сохранении произойдёт автоматическая магия:
- Создастся папка
packages/WeppsAdmin/ConfigExtensions/Reports/ - Скопируются шаблонные файлы из
_Example10/ - В файлах заменится
_Example10наReports - Добавятся права доступа администратору
Шаг 4. Перейдите в новое расширение
Откройте /_wepps/extensions/reports/ — увидите страницу с тремя ссылками:
- По продажам (
/reports/sales.html) - По пользователям (
/reports/users.html) - По посещаемости (
/reports/traffic.html)
Вот и вся магия! Платформа создала рабочее расширение с навигацией, готовое к наполнению функционалом.
Структура файлов расширения
После создания в папке Reports/ появятся:
Reports/
├── Reports.php # Основной класс расширения
├── Reports.tpl # Главный шаблон страницы
├── Reports.css # Стили расширения
├── Reports.js # JavaScript
├── ReportsTest.tpl # Дополнительный шаблон (опционально)
└── Request.php # Обработчик AJAX-запросов
Как это работает?
Reports.php — главный контроллер:
class Reports extends Request {
public $title;
public function request($action = "") {
$this->tpl = 'Reports.tpl';
$this->title = $this->get['ext']['Name'];
switch ($action) {
case 'sales':
$this->title = "Отчёт по продажам";
// Ваша логика
break;
case 'users':
$this->title = "Отчёт по пользователям";
// Ваша логика
break;
}
}
}
Reports.tpl — отображает навигацию:
{$extNavSubTpl}
Это подключает автоматически сгенерированное меню из поля ENav.
Почему это круто? Выгоды для всех
🚀 Для владельца бизнеса / руководителя:
- Кастомные инструменты под задачи. Создаёте именно то, что нужно — без переплаты за лишний функционал типовых решений.
- Быстрое внедрение. Разработка занимает часы, а не недели — основа уже есть.
- Независимость от платформы. Расширения работают автономно, обновления Wepps их не ломают.
- Масштабируемость. Добавляйте новые разделы в расширение — просто дописываете строку в
ENav.
👨💻 Для разработчика:
- Структурированный код. Чёткое разделение на классы, шаблоны, стили — легко поддерживать.
- Минимум рутины. Не нужно создавать файлы вручную — платформа копирует шаблон.
- Полная свобода PHP. Можете использовать любые библиотеки, обращаться к БД напрямую, подключать внешние API.
- Переиспользование кода. Написали модуль один раз — копируете на другие проекты.
👥 Для контент-менеджера / администратора:
- Понятная навигация. Все функции расширения в одном разделе — не нужно искать по всей админке.
- Тематическая группировка. "Резервирование", "Отчёты", "Интеграции" — сразу видно назначение.
- Настройка прав доступа. Можно дать доступ к конкретному расширению определённым пользователям.
✅ Для всех вместе:
- Расширяемость платформы. Не ограничены возможностями коробочного решения.
- Единая экосистема. Расширения интегрированы в админку, используют её стили и компоненты.
- Безопасность. Наследуют систему проверки прав доступа Wepps.
- Документированность. Пример
_Example10— готовый шаблон с комментариями.
Реальные сценарии использования
Сценарий 1: Интеграция с CRM
Ситуация: Нужно синхронизировать заказы с внешней CRM-системой через API.
Решение: Создаёте расширение "Интеграция CRM" с подразделами:
Настройки подключения:::settings
Синхронизация заказов:::sync-orders
Лог операций:::logs
В settings.html — форма с ключами API, в sync-orders.html — кнопка запуска синхронизации, в logs.html — таблица успешных/ошибочных операций.
Сценарий 2: Генератор прайс-листов
Ситуация: Каждый месяц нужно формировать Excel-файл с актуальными ценами для партнёров.
Решение: Расширение "Экспорт данных":
Прайс-лист товаров:::pricelist
Каталог с фото:::catalog
Архив прайсов:::archive
На странице pricelist.html — фильтры по категориям и кнопка "Скачать Excel". Файлы сохраняются в archive для истории.
Сценарий 3: Массовая обработка товаров
Ситуация: Нужно изменить цены на 500 товаров по сложной формуле, зависящей от категории и поставщика.
Решение: Расширение "Обработка данных":
Обновление цен:::update-prices
Изменение категорий:::change-categories
Экспорт в маркетплейсы:::export
Страница update-prices.html — загрузка Excel с новыми ценами, предпросмотр изменений, применение.
Подводные камни и лайфхаки
⚠️ Важные моменты:
- Алиас только латиницей. Поле
Aliasдолжно содержать латинские буквы — это имя класса PHP. - Формат ENav строгий. Три двоеточия
:::между названием и алиасом, перенос строки между записями. - CopyFiles работает один раз. Если файлы уже существуют, они не перезапишутся. Для обновления шаблона удалите папку расширения вручную.
- Права доступа. Новое расширение автоматически добавляется администратору, остальным ролям нужно назначить вручную.
💡 Лайфхаки:
- Изучите
_Example10. Это готовый шаблон со всеми нужными файлами — лучшая документация. - Request.php для AJAX. Используйте этот файл для обработки асинхронных запросов (загрузка файлов, обновление данных).
- Namespace обязателен. Класс должен быть в
namespace WeppsAdmin\ConfigExtensions\Reports; - Используйте AdminUtils. Класс
WeppsAdmin\Admin\AdminUtilsпредоставляет готовые методы (модальные окна, уведомления).
Шпаргалка: быстрый старт
1. /_wepps/ → "Системные расширения" → "Добавить"
2. Заголовок: [название], Ключ: [латиница]
3. Навигация: [Название:::алиас] (каждая строка — подраздел)
4. CopyFiles: 1.0
5. Сохранить
6. /_wepps/extensions/[ключ]/ — готово!
Что дальше?
Системные расширения — это мощный инструмент для кастомизации админки Wepps. Вы можете:
- Создавать сложные интеграции с внешними сервисами
- Разрабатывать специализированные инструменты обработки данных
- Строить уникальные модули под бизнес-логику проекта
Начните с простого расширения из 1-2 подразделов, изучите структуру файлов, добавьте свою логику — и у вас появится переиспользуемый модуль для всех будущих проектов.
Главное правило: Если задача не укладывается в стандартный список данных — это повод создать системное расширение!
