Темы оформления являются традиционным способом настроить внешний вид страниц веб-приложения. Применив новую тему, мы можем изменить внешний вид всего приложения за считанные секунды.
В Yii каждая тема представлена как папка, содержащая файлы представлений, макетов и прочих необходимых файлов, таких,
как CSS, JavaScript и пр. Название папки соответственно определяет название темы. Все темы хранятся в папке
WebRoot/themes
, при этом быть активной, т.е. использоваться в текущий момент, может только одна из тем.
Подсказка: Папку, где по умолчанию хранятся темы -
WebRoot/themes
- можно легко изменить путем установки свойств basePath и baseUrl компонента themeManager на желаемые.
Для активации темы нужно установить значение theme равным имени соответствующей темы. Это можно проделать путем конфигурации приложения или прямо в ходе выполнения в действиях контроллера.
Примечание: Имя темы чувствительно к регистру, и, если попытаться активировать несуществующую тему, свойство
Yii::app()->theme
вернетnull
.
Содержимое папки с темами должно быть организовано точно также, как и содержимое базовой директории приложения, то есть, все файлы представлений
должны находитьс в папке views
, макеты представлений в папке views/layouts
, а файлы системных представлений
в папке views/system
. Например, если необходимо заменить представление create
контроллера PostController
на
представление темы classic
, нужно сохранить новый файл представления как WebRoot/themes/classic/views/post/create.php
.
Для представлений контроллеров в модулях, соответствующие файлы оформленных представлений нужно
также поместить в папку views
. Например, если упомянутый выше контроллер PostController
входит в модуль forum
, необходимо
сохранить файл представления create
как WebRoot/themes/classic/views/forum/post/create.php
. Если модуль forum
является
составной частью другой модуля support
, то файл представления должен быть сохранен как WebRoot/themes/classic/views/support/forum/post/create.php
.
Примечание: Папка
views
может содержать данные чувствительные с точки зрения безопасности, поэтому необходимо ограничить доступ к папке извне сервера.
В момент вызова метода render или renderPartial для отображения представления происходит обращение к соответствующим файлам представлений и макетов активной темы. Если файлы найдены, начнется формирование странички, в противном случае, будут использоваться файлы оформления по умолчанию, месторасположение которых устанавливается свойствами viewPath и layoutPath.
Подсказка: Часто в представлениях темы приходится ссылаться на прочие файлы темы, например, для отображения картинки, находящейся в подпапке темы
images
. Используя свойство baseUrl активной темы, можно сформировать корректную ссылку на картинку следующим образом:Yii::app()->theme->baseUrl . '/images/FileName.gif'
Signup or Login in order to comment.