Los layouts definen el maqueteado de la página en general, donde dentro de esta irá el contenido de cada página renderizada. Actualmente los layouts solo pueden ser generados mediante una página con extensión .php
Importante: el layout es asignado mediante una sesión de PHP por lo cual si cambia se debe:
El núcleo del framework trae por defecto el layout Bootstrap. La ventaja principal de este layout es que se adapta a las diferentes extensiones o módulos oficiales que puedan estar cargados. Entonces este sólo layout sirve para diferentes escenarios.
Además la extensión layouts provee algunos otros, muy básicos y por lo general no recomendados.
Supongamos que queremos crear el layout MiLayout, los pasos son:
View/Layouts/MiLayout.php
con el código HTML y PHP del layout.webroot/layouts/MiLayout/css/screen.css
con el código CSS del layout.Config/core.php
para indicar que se utilizará el nuevo layout.Configure::write('page.layout', 'MiLayout');
Si se desea utilizar como base un layout ya existente solo se debe copiar al directorio website/View/Layouts
el layout desde el directorio estándar (lib/sowerphp/core/View/Layouts/Bootstrap.php
) o donde se encuentre el layout (por ejemplo si estuviese en una extensión).
Vamos a usar el layout SimpleLight
para crear uno nuevo llamado NuevoLayout:
$ mkdir -p website/View/Layouts $ cp -avr /usr/share/sowerphp/extensions/sowerphp/layouts/View/Layouts/SimpleLight.php website/View/Layouts/NuevoLayout.php $ mkdir -p website/webroot/layouts $ cp -avr /usr/share/sowerphp/extensions/sowerphp/layouts/webroot/layouts/SimpleLight website/webroot/layouts/NuevoLayout
Una vez lo copiamos debemos editar el archivo Config/core.php
:
\sowerphp\core\Configure::write('page.layout', 'NuevoLayout');
Luego solo nos queda editar el layout copiado para poder adaptarlo a nuestras necesidades.
$_header_title
: título de la página: título + ubicación (para usar en tag title dentro de header).$_header_extra
: cabeceras extras con archivos js
o css
para incluir dentro del tag header.$_body_title
: título de la página (para usar en body).$_pag
: página que se está viendo.$_nav_website
: arreglo con el menú para la navegación principal.$_nav_app
: arreglo con el menú para la navegación de la aplicación.$_footer
: pie de página.$_timestamp
: última modificación del archivo de la página.$_layout
: nombre del layout que se está utilizando.$_content
: página solicitada ya renderizada.