Главная | Документаци для разраотчиков | Компоненты платформы TaskOn 2

Компоненты платформы TaskOn 2

В платформе TaskOn предусмотрены встроенные компоненты, которые помогают быстро вынести редактирование и настройку контентной без обращения к классам.

SectionManager (менеджер секций)

SectionManager - компонент, обеспечивающий вывод информации из одного модуля в другой без явной привязки внутренних компонентов обоих модулей.

Часто возникают ситуации, когда необходимо вывести информацию с модуля “А” в модуле “Б”, но сделать это таким образом, чтобы при отсутствии одного из модулей в системе не столкнуться с ошибкой отсутствия его компонентов или виджетов.

Компонент SectionManager решает такую проблему путем хранения в переменной sections массива секций и их ключей, по которым впоследствии и происходит рендеринг без привязки к конкретному модулю системы.

Все это достигается благодаря тому, что каждый модуль имеет свой набор конфигурационных файлов, которые сливаются воедино с основными конфигурационными файлами приложения в момент его запуска.

Для примера предположим, что нам необходимо вывести виджет h0rseduck\multilingual\widgets\LanguageSwitcher в шапке на всех страницах сайта только в том случае, если модуль language входит в сборку платформы. Для этого нам необходимо добавить в основной слой (layout) приложения (например, backend) вызов определенной секции и присвоить ей ключ.

Добавим в представление рендер секции по ключу:

  1. <?= Yii::$app->sectionManager->render('language.switcher'); ?>

А в конфигурационном файле common/modules/language/config/backend.php модуля language добавим нашу секцию в массив sections компонента sectionManager:

  1. 'components' => [
  2. 'sectionManager' => [
  3. 'sections' => [
  4. 'language.switcher' => [
  5. [
  6. 'widget' => [
  7. 'class' => LanguageSwitcher::class,
  8. 'view' => '@common/modules/language/widgets/views/switcher'
  9. ]
  10. ],
  11. ],
  12. ]
  13. ],
  14. ],

Список параметров рендера

render(string $key, array $params, boolean $force = false): string

  • key - ключ секции;
  • params - параметры, передаваемые в секцию;
  • force - принудительный рендер.

Для того, чтобы передать из представления различные параметры в секцию, необходимо указать их в качестве массива вторым входным параметром функции render компонента sectionManager:

  1. <?= Yii::$app->sectionManager->render('language.switcher', [
  2. 'param' => 'value'
  3. ]); ?>

Для того, чтобы предотвратить повторную обработку одной и той же секции, предусмотрена система локального кэширования результатов секции в пределах жизненного цикла приложения. Чтобы отключить кэширование секции, необходимо передать в функцию render компонента sectionManager true в качестве третьего входного параметра force:

  1. <?= Yii::$app->sectionManager->render('language.switcher', [
  2. 'param' => 'value'
  3. ], true); ?>

BlockManager

BlockManager - компонент, позволяющий достаточно быстро реализовать редактирование html содержимое какого-либо блока на frontend. Для работы компонента необходим подключенный модуль “Контент”.

Резервирование блока

Список блоков системы определяется в массиве blocks компонента blockManager. Настройка блоков через конфигурацию приложения:

  1. 'components' => [
  2. 'blockManager' => [
  3. 'blocks' => [
  4. 'privacy-policy' => 'Политика конфиденциальности',
  5. ]
  6. ]
  7. ]

Массив должен быть заполнен в следующем формате:

  1. ['key' => 'title']
  • key - уникальный ключ блока, по которому и происходит получение содержимого;
  • title - наименование блока, отображаемое в Панели управления.

Вывод содержимого блока

  1. <?= Yii::$app->blockManager->getContentByKey('privacy-policy'); ?>