Yii2 Возможность: темы
Тема - это каталог с файлами видов контроллеров (views) и шаблонов (layouts). Каждый файл в директории темы как бы "перекрывает" соответствующий файл приложения в директории @app/views. Приложение может иметь множество тем, и каждая тема может предоставлять совершенно иную функциональность. В любое время активна только одна тема.
Что бы включить возможность темизации, можно создать в директории приложения директорию themes (название произвольно) в ней будут находится директории тем. И указать эту директорию в конфиге, как viewPath приложения.
viewPath - относительный путь к каталогу view, он резолвится при помощи basePath - по-умолчанию указывает на корень приложения
// www/vendor/yiisoft/yii2/base/Module.php $this->_viewPath = $this->getBasePath() . DIRECTORY_SEPARATOR . 'views';
Предположим, что мы хотим создать тему с названием "default" - создадим директорию @app/themes/default, в неё скопируем директорию @app/view - та самая что содержит layouts и site (по-умолчанию). Все шаблоны, которые не будут найдены в @app/themes/default/views/... будут искаться в @app/views/... туда можно помещать шаблоны, которые не предполагается темизировать.
Примерная структура диреторий:
application | |-themes | |-default | |-views | |-layouts | |- ... | |-site |-...
Далее в конфиге прописываем использование темы. Тема - это свойство компонента view - класс yii\web\View, который, кстати создается неявно, и не требует явной записи в конфиге, но для использования темы пропишем его явно:
... 'components' => [ ... , 'view' => [ 'theme' => [ 'class'=> yii\base\Theme::className(), 'basePath'=>'@app/themes/default' // путь в дир-ию темы ], ... ], ... ], ...