Temas ===== > Note: 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. > Note: 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](structure-assets.md) de archivos CSS y Javascript. Configuración de un Tema ------------------------ 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: ```php '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`. ### Temas para Módulos Para utilizar temas en los módulos, el `pathMap` debe ser similar al siguiente: ```php '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`. ### Temas para Widgets 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: ```php '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/index.php`. Uso de Multiples Rutas ---------------------- Es posible mapear una única ruta a múltiples rutas de temas. Por ejemplo: ```php '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.