В платформе TaskOn предусмотрены встроенные компоненты, которые помогают быстро вынести редактирование и настройку контентной без обращения к классам.
SectionManager - компонент, обеспечивающий вывод информации из одного модуля в другой без явной привязки внутренних компонентов обоих модулей.
Часто возникают ситуации, когда необходимо вывести информацию с модуля “А” в модуле “Б”, но сделать это таким образом, чтобы при отсутствии одного из модулей в системе не столкнуться с ошибкой отсутствия его компонентов или виджетов.
Компонент SectionManager решает такую проблему путем хранения в переменной sections массива секций и их ключей, по которым впоследствии и происходит рендеринг без привязки к конкретному модулю системы.
Все это достигается благодаря тому, что каждый модуль имеет свой набор конфигурационных файлов, которые сливаются воедино с основными конфигурационными файлами приложения в момент его запуска.
Для примера предположим, что нам необходимо вывести виджет h0rseduck\multilingual\widgets\LanguageSwitcher
в шапке на всех страницах сайта только в том случае, если модуль language входит в сборку платформы. Для этого нам необходимо добавить в основной слой (layout) приложения (например, backend) вызов определенной секции и присвоить ей ключ.
Добавим в представление рендер секции по ключу:
<?= Yii::$app->sectionManager->render('language.switcher'); ?>
А в конфигурационном файле common/modules/language/config/backend.php
модуля language добавим нашу секцию в массив sections компонента sectionManager:
'components' => [
'sectionManager' => [
'sections' => [
'language.switcher' => [
[
'widget' => [
'class' => LanguageSwitcher::class,
'view' => '@common/modules/language/widgets/views/switcher'
]
],
],
]
],
],
render(string $key, array $params, boolean $force = false): string
Для того, чтобы передать из представления различные параметры в секцию, необходимо указать их в качестве массива вторым входным параметром функции render компонента sectionManager:
<?= Yii::$app->sectionManager->render('language.switcher', [
'param' => 'value'
]); ?>
Для того, чтобы предотвратить повторную обработку одной и той же секции, предусмотрена система локального кэширования результатов секции в пределах жизненного цикла приложения. Чтобы отключить кэширование секции, необходимо передать в функцию render компонента sectionManager true в качестве третьего входного параметра force:
<?= Yii::$app->sectionManager->render('language.switcher', [
'param' => 'value'
], true); ?>
BlockManager - компонент, позволяющий достаточно быстро реализовать редактирование html содержимое какого-либо блока на frontend. Для работы компонента необходим подключенный модуль “Контент”.
Резервирование блока
Список блоков системы определяется в массиве blocks компонента blockManager. Настройка блоков через конфигурацию приложения:
'components' => [
'blockManager' => [
'blocks' => [
'privacy-policy' => 'Политика конфиденциальности',
]
]
]
Массив должен быть заполнен в следующем формате:
['key' => 'title']
Вывод содержимого блока
<?= Yii::$app->blockManager->getContentByKey('privacy-policy'); ?>
Для того, чтобы мы смогли Вам предоставить доступ расскажите немного о себе
Опишите в форме ниже задачу, которую требуется реализовать.