В платформе 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'); ?>
Для того, чтобы мы смогли Вам предоставить доступ расскажите немного о себе
Опишите в форме ниже задачу, которую требуется реализовать.