Создание системного расширения в Wepps: расширяем возможности админки

Можно ли создать отдельный модуль в админке со своей навигацией, несколькими страницами и полным контролем над PHP-кодом? Именно для этого существуют системные расширения — мощный инструмент для добавления произвольного функционала в административную панель.

15.01.2026

Вам нужно добавить новый функционал в админку Wepps, но обычных списков недостаточно? Может быть, это сложная интеграция с внешним сервисом, инструмент для массовой обработки данных, или генератор отчётов. Стандартные средства не подходят — нужна кастомная логика с собственным интерфейсом.

А что если можно создать отдельный модуль в админке со своей навигацией, несколькими страницами и полным контролем над PHP-кодом? Именно для этого существуют системные расширения — мощный инструмент для добавления произвольного функционала в административную панель.

Системные расширения — это отдельные мини-приложения внутри админки. Давайте разберёмся, как их создавать и зачем они нужны.

Как устроен магазин расширений: аналогия для понимания

Представьте, что админка Wepps — это торговый центр, в котором есть разные отделы:

  1. Списки данных — обычные магазины с типовыми товарами (Товары, Новости, Контакты). У каждого стандартная витрина, одинаковый формат.
  2. Системные расширения — специализированные отделы с уникальным функционалом (банк, кинотеатр, медцентр). У каждого свой интерфейс, своя логика работы.
  3. Группы расширений — целые крылья торгового центра, объединяющие несколько отделов по тематике.

Или вспомните панель управления сервером:

  • Обычные разделы — стандартные настройки (пользователи, файлы)
  • Расширения — дополнительные модули (мониторинг, бэкапы, логи)

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

Что такое Системное расширение? Гибкий модуль для админки

Системное расширение — это 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. Сохраните запись

При сохранении произойдёт автоматическая магия:

  1. Создастся папка packages/WeppsAdmin/ConfigExtensions/Reports/
  2. Скопируются шаблонные файлы из _Example10/
  3. В файлах заменится _Example10 на Reports
  4. Добавятся права доступа администратору

Шаг 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 с новыми ценами, предпросмотр изменений, применение.

Подводные камни и лайфхаки

⚠️ Важные моменты:

  1. Алиас только латиницей. Поле Alias должно содержать латинские буквы — это имя класса PHP.
  2. Формат ENav строгий. Три двоеточия ::: между названием и алиасом, перенос строки между записями.
  3. CopyFiles работает один раз. Если файлы уже существуют, они не перезапишутся. Для обновления шаблона удалите папку расширения вручную.
  4. Права доступа. Новое расширение автоматически добавляется администратору, остальным ролям нужно назначить вручную.

💡 Лайфхаки:

  • Изучите _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 подразделов, изучите структуру файлов, добавьте свою логику — и у вас появится переиспользуемый модуль для всех будущих проектов.

Главное правило: Если задача не укладывается в стандартный список данных — это повод создать системное расширение!

Как фреймворк: Гибкость разработки

Полный контроль над кодом, архитектурой и расширениями для сложных проектов

wapps framework

Как CMS: Простота управления

Интуитивная админ-панель для редакторов контента без программирования

wapps cms

Как платформа: Готовые решения

Быстрый старт проектов с возможностью глубокой кастомизации под любые задачи

wapps platform
Добавление полей в список в Wepps Platform

Данное руководство описывает процесс добавления новых полей в существующие списки (таблицы) платформы Wepps. Поля определяют структуру данных и интерфейс редактирования в административной панели.

13.01.2026
F
CSS-классы форм в Wepps Platform: Конструктор для красивых форм

В Wepps Platform есть готовая система CSS-классов для форм — как конструктор Lego. Вы берёте блоки (классы), собираете форму, и она сразу красивая. Давайте разберёмся, как это работает.

10.01.2026
Формы в Wepps Platform: От шаблона до базы данных за 5 минут

В Wepps Platform работа с формами организована как конвейер: вы описываете форму в шаблоне, система автоматически собирает данные, валидирует их, показывает ошибки и обрабатывает успешную отправку. Давайте разберёмся, как это работает и почему это намного проще, чем кажется.

08.01.2026

☝️ Будьте в курсе: полезные статьи, новости проекта и практические советы по работе с платформой Wepps.