Les layouts sont des blocs de codes qui contrôlent la structure HTML d'une partie particulière du rendu du template. Par défaut, Gaantry est livré avec plusieurs fichiers de layouts intégrés, ceux sont tous situés dans le dossier libraries/gantry/html/layouts/ :
- body_debugmainbody.php - une mise en page utilisée pour des configurations de mise en page principale en mode débugage.
- body_iphonemainbody.php - une mise en page utilisée pour les configurations de mise en page mainbody iphone - Obsolète -
- body_mainbody.php - la mise en page par défaut de mainbody. Il s'agit de la mise en page qui contrôle le mainbody vis à vis des barres latérales
- doc_body.php - une mise en page pour restituer la balise body, utilisée dans displayBodyTag()
- doc_tag.php - une mise en page utilisée dans le rendu générique d'une balise produite par la méthode displayClassesByTag()
- feature_basic.php - une mise en page utilisée pour les rendus génériques des contenus des fonctionnalités (features)
- mod_basic.php - une structure de base pour les modules
- mod_sidebar.php - la mise en page des sidebars
- mod_standard.php - la disposition standard des modules
- orderedbody_mainbody.php - restitue mainbody et sidebars pour une utilisation avec des tables CSS
Etape 1: Objectif
Les mises en page par défaut qui sont fournis avec le Framework Gantry sont conçus pour être assez flexibles pour répondre aux besoins de 99 % de toutes les implémentations possibles. Cependant il y a des occasions où la structure HTML par défaut ne contient pas tous les éléments des blocs ou les noms de classe requis pour réaliser un design particulier. Dans ces rares cas, vous pouvez utiliser toute la puissance du framework Gantry pour remplacer la mise en page par défaut avec votre propre layout du template. Aussi, certaines mises en pages telles que les dispositions de module sont assez flexibles pour supporter vos propres layouts personnalisés et vous pouvez les appeler de la même façon on appelle les layouts par défaut.
Etape 2: Créer/Copier de nouveaux fichier de Layouts
La façon la plus simple de faire est de copier un layout existant. Dans cet exemple, nous allons copier le layout body_mainbody.php, et le modifier par la suite. Les fichiers sont situés dans:
[VOTRE_SITE]/libraries/gantry/html/layouts/
Cependant, vous ne voulez pas modifier les fichiers de base de Gantry. à la place, copiez le nouveau fichier de layout dans :
[VOTRE_SITE]/templates/VOTRE_TEMPLATE/html/layouts/
Vous devrez créer ce dossier layouts/ s'il n'existe pas déjà
Dans ce cas, copiez body_mainbody.php depuis l'emplacement de vos layouts de base vers l'emplacement des layouts du template.
Etape 3: Structure du Fichier
Après avoir copié le fichier body_mainbody.php, vous pouvez l'ouvrir et le modifier en fonction de vos besoins. Par défaut, il ressemble à ceci:
<?php /** * @version $Id: body_mainbody.php 2381 2012-08-15 04:14:26Z btowles $ * @author RocketTheme http://www.rockettheme.com * @copyright Copyright (C) 2007 - ${copyright_year} RocketTheme, LLC * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only * * Gantry uses the Joomla Framework (http://www.joomla.org), a GNU/GPLv2 content management system * */ defined('GANTRY_VERSION') or die(); gantry_import('core.gantrylayout'); /** * * @package gantry * @subpackage html.layouts */ class GantryLayoutBody_MainBody extends GantryLayout { var $render_params = array( 'schema' => null, 'pushPull' => null, 'classKey' => null, 'sidebars' => '', 'contentTop' => null, 'contentBottom' => null ); function render($params = array()){ /** @var $gantry Gantry */ global $gantry; $fparams = $this->_getParams($params); // logic to determine if the component should be displayed $display_component = !($gantry->get("component-enabled",true) == false && JRequest::getVar('view') == 'featured'); ob_start(); // XHTML LAYOUT ?> <div id="rt-main" class="<?php echo $fparams->classKey; ?>"> <div class="rt-container"> <div class="rt-grid-<?php echo $fparams->schema['mb']; ?> <?php echo $fparams->pushPull[0]; ?>"> <?php if (isset($fparams->contentTop)) : ?> <div id="rt-content-top"> <?php echo $fparams->contentTop; ?> </div> <?php endif; ?> <?php if ($display_component) : ?> <div class="rt-block"> <div id="rt-mainbody"> <div class="component-content"> <jdoc:include type="component" /> </div> </div> </div> <?php endif; ?> <?php if (isset($fparams->contentBottom)) : ?> <div id="rt-content-bottom"> <?php echo $fparams->contentBottom; ?> </div> <?php endif; ?> </div> <?php echo $fparams->sidebars; ?> <div class="clear"></div> </div> </div> <?php return ob_get_clean(); } }N'hésitez pas à modifier ce fichier en fonction de vos besoins.