Sber Elementor Elearning
Данный файл содержит общее описание плагина. Более подробная информация находится в директории docs
Описание плагина
Sber Static Builder — это генератор статических сайтов, который преобразует страницы сайта WordPress в статический сайт, который можно разместить на своем сервере, у провайдера статического хостинга, в CDN или в системе обучения xAPI / Scorm. Сборка сайта значительно повышает его производительность и убирает множество потенциальных проблем с безопасностью.
Также все страницы сайта будут обернуты в iframe и запущены под управлением WP2 Wrapper. Под управлением оболочки страницы сайта превращаются в полноценный курс с информационными блоками, выводом медиа файлов, вопросами, прогрессом. Все виджеты из Elearning плагина также корректно работают в оболочке
Основные функции:
- Сборка страниц сайта в статику под разные окружения (Web / Scorm / xAPI)
- Настройка сборок: Меню / Загрузка / Доп. контент / Постобработка / Переводы — в Внешний вид → Плеер курса (кастомайзер); прочие ACF-опции сборок — в WP2 Platform → Настройки (при активном Platform)
- Интеграция с плагином Translate Press для перевода страниц сборки
Для кого:
- Создатели образовательных платформ: Разработчики, создающие образовательные платформы или сайты с обучающим контентом, могут использовать плагин для упрощения создания интерактивных курсов и тестов, интегрируя весь функционал непосредственно в WordPress.
Запуск проекта
Проект представляет из себя WordPress плагин. Для правильной работы плагина требуются
- PHP 8.2+
- WordPress 6+
- ACF Pro 6+
Интеграция с другими плагинами
- Translate Press - добавление возможности перевода страниц сборки
- My Private Site - поддержка сборки даже закрытых от посещения сайтов
Dev запуск
Для установки PHP зависимостей нужно запустить composer i в корне проекта. Для установки фронтенд зависимостей npm i в директории assets.
Фронтенд можно собрать в dev режиме с помощью npm run build:dev. С помощью npm run dev можно запустить watch сервер с автопересборкой файлов
Prod запуск
Для сборки проекта для продакшена есть /bin/zip.sh скрипт. Он установить prod зависимости composer и npm, уберет все лишние файлы и создаст zip архив плагина для дальнейшей установки
Конфигурация в админке
Есть возможность задать общие настройки для сборок на странице настроек (/wp-admin/edit.php?post_type=sber_static_build&page=sber-static-settings)

А так же задать настройки каждой сборки на ее странице в админке
Описание файлов
Основные PHP файлы (папка src)
Директория src содержит ключевые PHP-файлы, реализующие логику плагина,
Основные файлы и директории
- ArrayDataHandler.php: Управляет получением типизированных данных из массивов
- Helpers.php: Вспомогательные функции для различных задач, таких как генерация URL, преобразование данных и др.
- build_files_black_list.php: Массив с перечнем файлов, исключаемых из сборки статического курса.
Директория ACF
- acf_groups: json файлы с конфигурацией ACF полей для настроек всех сборок и конкретной сборки
- AcfFieldCustomPaths.php и AcfFieldPlayerJsSkin.php: кастомные поля ввода для acf
- MultilangFieldsFilter.php: скрытие полей для мультиязычности при отключенном плагине вопросов
Директория Ajax
- StaticBuildAjax.php: AJAX обработчик для получения статуса сборки и ее остановки
Директория Elementor
- Main.php: доработка фронтенд конфигов в сборке
Директория Entities
Все основные сущности для сборки курсов
- Builder: Набор классов для создания сборок
- BuildController.php: Запуск сборок из очереди ожидания в сборку
- Builder.php: Все этапы создания сборки
- Elementor.php: Загрузка Elementor файлов в сборку
- FilesBlackList.php: Фильтрация файлов и директорий сборки по черному списку
- Config: Наборы правил для генерации конфигураций под разные окружения курса (Web / Scorm / xAPI).
- Page: Набор классов для генерации одной сущности в сборку
- Enums: Перечисления, такие как
BuildStatus.php,ConfigFileType.php,ConfigType.php, используемые для определен ия статусов и типов файлов в процессе сборки. - Exceptions: Исключения, которые могут возникнуть в процессе генерации статического курса, например,
BuildStoppedException.php,PageSkippedException.php. - Languages: Набор классов для перевода страниц в сборке.
Директория ExtraPlugins
Интеграция с другими плагинами
Директория PluginBase
Стандартный набор классов для работы плагина
Директория WordPressCore
- CPT: Кастомные типы записей (CPT) для хранения и управления сборкой статических страниц.
- SberStaticBuild.php: CPT для статической сборки, обеспечивающий её хранение и об работку.
- Modal.php: CPT для модальных окон.
- ListTables: Поддержка пользовательских таблиц в админ-панели.
- SberStaticBuildListTable.php - Таблица постов для сборок в админке
- MetaBoxes: Добавление мета-боксов.
- SberStatic.php - метабокс с настройками сборки
- Posts: Набор классов для получения информации о разных сущностях плагина (StaticBuild, StaticPage, StaticModal, StaticPanel).
Фронтенд ресурсы (папка assets)
Директория assets содержит все необходимые ресурсы для фронтенд-части плагина, включая стили, скрипты и изображения, которые обеспечивают интерфейс и визуальное оформление курса
Директория src
- js: Основные JavaScript-файлы, организованные по функциям и модулям.
- acf: Скрипты для интеграции с Advanced Custom Fields.
- meta_boxes: Скрипт
sber_static.jsдля функциональности мета-боксов, используемых в админке WordPress для управления сборкой. - src: Главные функциональные скрипты для фронтенда.
- InfoUpdater.js: Обновляет информацию на страницах курса в реальном времени.
- handleActions.js: Управляет действиями и событиями интерфейса курса.
- mainPageSelect.js: Обработка выбора главной страницы, добавленной в сборку.
- tableCheckboxes.js: Скрипт для управления чекбоксами в таблице выбора страниц курса.
- actions: Обработчики действий в настройке курса (запуск и остановка)
- utils: Вспомогательные утилиты
- scss: Стили для фронтенда
- webpack - Конфигурации и модули для Webpack, инструмента сборки JavaScript.
- Parts/BasicPart.js - здесь находится список всех собираемых js файлов
Служебные скрипты (папка bin)
- install-wp-tests.sh - установка тестового окружения для PHPUnit
- phpcs.sh - Скрипт для запуска PHP_CodeSniffer для проверки стандартов кода. Запускается с помощью composer
- zip.sh - Скрипт для упаковки проекта в ZIP-архив. Можно запустить с помощью composer, но лучше запускать напрямую
Статический анализ PHPcs и Rector
Анализ кода производится автоматически с помощью PHP библиотек PHPcs, Rector и Psalm. Для упрощения запуска в composer.json добавлены скрипты. Скрипт для запуска всех линтеров code:fix
PHPcs
Проверяет стиль написания кода на соответствие стандартам WordPress с частичными послаблениями описанными в файле ruleset.xml
- phpcs - вывод краткой информации об ошибках
- phpcs:full - выво д подробной информации об ошибках
- phpcs:fix - автоматическое исправление ошибок
Rector
Проверяет логику кода и производит автоматический рефакторинг кода. Конфигурация библиотеки находится в файле rector.php
- rector:dry - вывод информации об ошибках
- rector:fix - автоисправление ошибок
Psalm
Psalm проверяет типизацию кода. Уровень проверки выставлен на дефолтные 2/8 (где 1 - это максимальный уровень проверок), поддержка 1 уровня требует большого количества работ
- psalm - показ ошибок типизации
- psalm:full - показ ошибок типизации и предупреждений с информацией
Системы непрерывной интеграции
- .gitlab-ci.yml - конфигурация для запуска CI в GitLab
- ci/docker_install.sh - Скрипт для установки зависимостей с использованием Docker в среде CI/CD.
WP2 Wrapper / Оболочка курса
Актуальная сборка WP2 Wrapper
Templates
Все шаблоны страниц и компонентов находятся в этой директории. Для их рендера можно воспользоваться функциями в главном файле плагина
Tests
Директория с автотестами на основе PHPUnit, но unit и интеграционных тестов недостаточно для полноценной проверки плагина. Нужны e2e тесты на основе Cypress (или аналога)
Перевод плагина
Все строки в плагине пишутся на английском языке с применением языковых WP функций (codex). В js коде для перевода нужно использовать i18n.js библиотеку, например wp.i18n.__('Copy id', 'sber-elementor-elearning'), важно использовать полный путь до функции перевода, чтобы она не была минимизирована webpack'ом и могла быть считана при подготовке перевода. Домен перевода соответствует имени плагина sber-elementor-elearning.
Composer скрипты для генерации файлов перевода:
- make-pot - генерация шаблонного файла перевода
- update-po - обновление всех файлов перевода на основе pot файла. После вызова этого скрипта нужно открыть все обновленные po файлы и проверить, что все строки переведены
- make-mo - генерация mo файлов на основе po файлов
- make-mo-json - генерация json файлов для перевода js кода
languages - Папка с файлами локализации, включающая .mo, .po, и .pot файлы для поддержки перевода и работы с различными языковыми версиями.