ConditionGenerator
This content is not available in your language yet.
Вспомогательный класс для добавления условий к различным обработчикам событий. Позволяет уточнить момент когда будет вызван код, например, при определенном значении переменной в курсе, только на определенном устройстве, только на активной странице курса и т.п.
ConditionInterface.php
Заголовок раздела «ConditionInterface.php»Сейчас существует несколько групп-условий, каждая группа реализована с помощью класса имплементирующего интерфейс ConditionInterface.
interface ConditionInterface { public function add_controls( Controls_Stack $widget, array $config ): void;
public function generate( array $condition_data ): string;}Метод add_controls предназначен для добавления всех требуемых полей управления в секцию. В данный метод также могут передаваться дополнительные настройки, если они требуются для каких-то полей управления
Метод generate генерирует строку с условием. Условие - это валидный js код, который можно вызвать и получить boolean значение: true - условие выполнено, false - нет
CommonCondition.php
Заголовок раздела «CommonCondition.php»Данный класс отвечает за проверки переменных в оболочке курса определенным значениям или другим переменным. Например можно проверить, что курс завершен (isCourseCompleted = true) с помощью таких настроек:

PageActiveCondition.php
Заголовок раздела «PageActiveCondition.php»Условие из этого класса проверяет, выполняется ли оно на текущей странице курса. Id текущей странице в курсе получается из переменной Elementor’a elementorFrontend.config.post.id То есть условие выполнится только если window.parent.courseController.data.getAll().activePageId==elementorFrontend.config.post.id - именно этот код можно увидеть в методе generate класса PageActiveCondition.php
SpecificDeviceCondition.php
Заголовок раздела «SpecificDeviceCondition.php»Работает на основе checkBrowser. Проверяет, соответствует ли устройство пользователя указанным требованиям:
- Тип устройства - тип устройства desktop, tablet или mobile
- Операционная система - windows, mac, android или ios
- Браузер - chrome, safari или firefox

ConditionManager
Заголовок раздела «ConditionManager»Данный класс позволяет удобно добавлять наборы условий в виджеты
class ConditionManager extends Singleton { /** * @param non-empty-array<class-string<ConditionInterface>, array> $controls */ public function add_controls( Controls_Stack $widget, array $controls ): void {/*...*/}
public function generate( array $condition_data ): string {/*...*/}}add_controls( Controls_Stack $widget, array $controls ): void- добавляет в заданное место в виджете ($widget) все поля управления заданные в ($controls). Массив$controlsхранит в ключах класс имплементирующийConditionInterface, а значение это массив-конфигурация. Пример добавления:
ConditionManager::get_instance()->add_controls( $repeater, [ CommonCondition::class => [ 'enabled_by_default' => true, ], PageActiveCondition::class => [], SpecificDeviceCondition::class => [], ]);generate( array $condition_data ): string- вызывает у всех классов-условий, методgenerateи объединяет их через&&