CakePHP: Cambio de funcionamiento de los themes en la versión 1.3
Posted by faemino | Filed under CakePHP
Hace un tiempo hablé de cómo usar temas en CakePHP. Para la nueva versión 1.3, ahora en beta,
hay un pequeño cambio que hace que una aplicación migrada de 1.2 a 1.3 no reconozca las css, los js e imágenes ubicadas en webroot.
La hasta ahora /app/webroot/themed/mi_tema/ cambia a /app/views/themed/mi_tema/webroot y dentro de esta las carpetas /css, /img y /js.
De esta manera CakePHP pretende que los temas sean más compactos y facilitar su distribución a terceras personas. No es mala idea, pero me gustaba el funcionamiento de la 1.2 con sus cosas separadas respetando la lógica de las carpetas.
Más información: Uso de Temas (Documentación oficial).
Tags: CakePHP1.3, themes
Usar temas en CakePHP
Posted by faemino | Filed under CakePHP
Una web puede modificar su diseño a lo largo del tiempo o puede ofrecer diferentes aspectos visuales según un usuario o el dispositivo que accede, por ejemplo un iPhone. Una manera cómoda de hacerlo es usando los themes que propociona CakePHP.
Sólo necesitamos crear una carpeta dentro de Views llamada themed y dentro de esta otra carpeta con el nombre del tema que queramos en la que pondremos todas las vistas que normalmente estarían en la carpeta Views. O sea, la carpeta layouts, pages y todas las otras carpetas de las vistas de nuestros controladores.
En el caso que existan CSS y Javascripts exclusivos para cada tema, estas carpetas deben residir dentro de webroot/themed/<nombre de nuestro tema> y aquí poner las carpetas CSS y JS con los archivos pertinentes.
Para decirle a la aplicación qué tema usar, debemos especificarlo desde la declaración de miembros de un controlador específico o desde el app_controller, mediante: var $theme = ‘mi_tema’
También se puede cambiar el tema en los métodos callback beforeRender() o beforeFilter().
Más información en la sección de Themes de la documentación.
Esto hace más evidente que el mayor código posible de la lógica (en realidad todo) debe residir en el controlador y en mayor medida en el modelo.