Как отключить Bootstrap в публичной части сайта, но оставить в админской?
В приложении на Yii2 используется yiisoft/yii2-bootstrap библиотека. Каким образом отключить использование bootstrap в паблике? Если была бы верстка с отдельными файлами, все понятно, а как тут...
Ответы (1 шт):
В конфиге надо настроить assetManager
'assetManager' => [
'linkAssets' => true, // Чтобы не создавались директории
'bundles' => [
'yii\web\JqueryAsset' => [
'js'=>[]// css в таком случае будут подключены, если они есть в этом комплекте
],
'yii\bootstrap\BootstrapPluginAsset' => [
'js'=>[]
],
'yii\bootstrap\BootstrapAsset' => [
'css' => [],
],
],
],
Можно настраивать более гибко. Например не публиковать ресурс по умолчанию, при этом подключить версию по внешней ссылке.
'bundles' => [
'yii\web\JqueryAsset' => [
'sourcePath' => null, // не опубликовывать комплект
'js' => [
'//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js',
]
],
],
Можно подключать разные файлы в зависимости от окружения (DEV, PROD).
'assetManager' => [
'bundles' => [
'yii\web\JqueryAsset' => [
'js' => [
YII_ENV_DEV ? 'jquery.js' : 'jquery.min.js'
]
],
],
],
Если мы настроим отключение ресурсов таким образом, то все зависимые ресурсы от этого также будут отключены и не опубликуются на странице.
'assetManager' => [
'bundles' => [
'yii\web\JqueryAsset' => false,
],
],
Иногда возникают такие случаи, что в разных бандлах используются разные версии (например jQuery) скриптов. Чтобы не искать и не приводить все бандлы единому виду, для смены версии можно воспользоваться маппингом, как показано ниже. Таким образом все версии jQuery будут 2.1.1
'assetManager' => [
'assetMap' => [
'jquery.js' => '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js',
],
],
Добавлять к каждому файлу комплекта ресурсов гет-параметр, который соответствует временной метке последнего изменения файла (обновление кэша браузера). Адреса файлов будут выглядеть так /assets/5515a87c/yii.js?v=1423448645
'assetManager' => [
'appendTimestamp' => true,
],
Код ядра Yii содержит большое количество комплектов ресурсов. Среди них, следующие комплекты широко используются и могут упоминаться в Вашем приложении или коде расширения:
yii\web\YiiAsset: Включает основной yii.js файл который реализует механизм организации JavaScript кода в модулях. Также обеспечивает специальную поддержку для data-method и data-confirm атрибутов и содержит другие полезные функции.yii\web\JqueryAsset: Включает jquery.js файл из jQuery Bower пакета.yii\bootstrap\BootstrapAsset: Включает CSS файл из Twitter Bootstrap фреймворка.yii\bootstrap\BootstrapPluginAsset: Включает JavaScript файл из Twitter Bootstrap фреймворка для поддержки Bootstrap JavaScript плагинов.yii\jui\JuiAsset: Включает CSS и JavaScript файлы из jQuery UI библиотеки.
Если Ваш код зависит от jQuery, jQuery UI или Bootstrap, Вам необходимо использовать эти предопределенные комплекты ресурсов, а не создавать свои собственные варианты.
В данном проекте у меня есть приложение api, frontend и приложение backend (админка). Вот в этом конфиге и надо добавить/изменить указанный код в секции components.

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