Повне керівництво (v2) Темізація - українська спільнота yii framework
Темізація - це спосіб замінити один набір уявлень іншим без переписування коду, що чудово підходить для зміни зовнішнього вигляду програми.
Для того, щоб почати використовувати темізаціі, налаштуйте властивість theme компонента додатка view. Конфігурація налаштовує об'єкт yii \ base \ Theme. який відповідає за те, як саме замінюються файли відображень. Головним чином, варто встановити такі властивості yii \ base \ Theme:
- yii \ base \ Theme :: basePath. базова директорія, в якій розміщені темізірованние ресурси (CSS, JS, зображення, і так далі).
- yii \ base \ Theme :: baseUrl. базовий URL для доступу до темізірованним ресурсів.
- yii \ base \ Theme :: pathMap. правила заміни файлів уявлень. Докладно описані далі.
Наприклад, якщо ви викликаєте $ this-> render ( 'about') в SiteController. то буде використовуватися файл відображення @ app / views / site / about.php. Проте, якщо ви дозволите темізаціі як показано нижче, то замість нього буде використовуватися @ app / themes / basic / site / about.php.
Info: При налаштуванні тим підтримуються псевдоніми шляху. При заміні відображень вони перетворюються в реальні шляхи в файлової системі або URL.
Ви можете звернутися до об'єкта yii \ base \ Theme через властивість yii \ base \ View :: theme. Наприклад, у файлі відображення, це буде виглядати наступним чином (об'єкт view доступний як $ this):
Властивість yii \ base \ Theme :: pathMap визначає те, як замінюються файли представлень. Властивість приймає масив пар ключ-значення де ключі є шляхами до оригінальних файлів, які ми хочемо замінити, а значення - відповідними шляхами до файлів з теми. Заміна заснована на частковому збігу: якщо шлях до подання починається з будь-якого з ключів масиву pathMap. то відповідна йому частину буде замінена значенням з того ж масиву. Для наведеної вище конфігурації @ app / views / site / about.php частково збігається з ключем @ app / views та буде замінений на @ app / themes / basic / site / about.php.
Темізація модулів #
Для того, щоб темізіровать модулі, властивість yii \ base \ Theme :: pathMap може бути налаштоване таким чином:
Це дозволить вам темізіровать @ app / modules / blog / views / comment / index.php в @ app / themes / basic / modules / blog / views / comment / index.php.
Темізація віджетів #
Для того, щоб темізіровать віджети ви можете налаштувати властивість yii \ base \ Theme :: pathMap наступним чином:
Це дозволить вам темізіровать @ app / widgets / currency / views / index.php в @ app / themes / basic / widgets / currency / index.php.
Спадкування тим #
Іноді потрібно створити базову тему, задану загальний вигляд програми і далі змінювати цей вид залежно, наприклад, від сьогоднішнього свята. Домогтися цього можна за допомогою наслідування тем. При цьому один шлях до файлу ставиться у відповідність кількома шляхами з теми:
В цьому випадку уявлення @ app / views / site / index.php темізіруется або в @ app / themes / christmas / site / index.php. або в @ app / themes / basic / site / index.php в залежності від того, в який з тим є потрібний файл. Якщо файли присутні і там і там, використовується перший з них. На практиці більшість темізірованних файлів будуть розташовані в @ app / themes / basic. а їхньою версією для свят в @ app / themes / christmas.