Nota: Esta sección está en desarrollo.
Un tema (theme) es un directorio de archivos y de vistas (views) y layouts. Cada archivo de este directorio sobrescribe el archivo correspondiente de una aplicación cuando se renderiza. Una única aplicación puede usar múltiples temas para que pueden proporcionar experiencias totalmente diferentes. Solo se puede haber un único tema activo.
Nota: Los temas no están destinados a ser redistribuidos ya que están demasiado ligados a la aplicación. Si se quiere redistribuir una apariencia personalizada, se puede considerar la opción de asset bundles de archivos CSS y Javascript.
La configuración de un tema se especifica a través del componente view
de la aplicación. Para establecer que un tema
trabaje con vistas de aplicación básicas, la configuración de la aplicación debe contener lo siguiente:
'components' => [
'view' => [
'theme' => [
'pathMap' => ['@app/views' => '@app/themes/basic'],
'baseUrl' => '@web/themes/basic',
],
],
],
En el ejemplo anterior, el pathMap
define un mapa (map) de las rutas a las que se aplicará el tema mientras que
baseUrl
define la URL base para los recursos a los que hacen referencia los archivos del tema.
En nuestro caso pathMap
es ['@app/views' => '@app/themes/basic']
. Esto significa que cada vista de @app/views
primero se buscará en @app/themes/basic
y si existe, se usará la vista del directorio del tema en lugar de la vista
original.
Por ejemplo, con la configuración anterior, la versión del tema para la vista @app/views/site/index.php
será
@app/themes/basic/site/index.php
. Básicamente se reemplaza @app/views
en @app/views/site/index.php
por
@app/themes/basic
.
Para utilizar temas en los módulos, el pathMap
debe ser similar al siguiente:
'components' => [
'view' => [
'theme' => [
'pathMap' => [
'@app/views' => '@app/themes/basic',
'@app/modules' => '@app/themes/basic/modules', // <-- !!!
],
],
],
],
Esto permite aplicar el tema a @app/modules/blog/views/comment/index.php
con la vista
@app/themes/basic/modules/blog/views/comment/index.php
.
Para utilizar un tema en una vista que se encuentre en @app/widgets/currency/views/index.php
, se debe aplicar la
siguiente configuración para el componente vista, tema:
'components' => [
'view' => [
'theme' => [
'pathMap' => ['@app/widgets' => '@app/themes/basic/widgets'],
],
],
],
Con la configuración anterior, se puede crear una versión de la vista @app/widgets/currency/index.php
para que se
aplique el tema en @app/themes/basic/widgets/currency/views/index.php
.
Es posible mapear una única ruta a múltiples rutas de temas. Por ejemplo:
'pathMap' => [
'@app/views' => [
'@app/themes/christmas',
'@app/themes/basic',
],
]
En este caso, primero se buscara la vista en @app/themes/christmas/site/index.php
, si no se encuentra, se intentará
en @app/themes/basic/site/index.php
. Si la vista no se encuentra en ninguna de rutas especificadas, se usará la
vista de aplicación.
Esta capacidad es especialmente útil si se quieren sobrescribir algunas rutas temporal o condicionalmente.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.