Dans cette section, nous allons passer en revue la création d'une mise en page personnalisée pour les modules XHTML dans un template Gantry.

Etape 1: Preparation

Déterminez le nom de votre disposition de module personnalisée.

Etape 2: Créer/Copier un nouveau fichier (layout).

La manière la plus simple de le faire est de copier un modèle existant et de le modifier après. 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 de copier le nouveau fichier de layout vers VOTRE_SITE/templates/VOTRE_TEMPLATE/html/layouts. Dans ce cas, utilisez mod_standard.php

Etape 3: Structure du Fichier

Chaque mise en page personnalisée de module nécessite une fonction render() c'est ce qui va être appelé par Gantry pour afficher la mise en page. Dans ce cas, puisque nous avons déjà copié un layout existant, c'est déjà fourni !

En haut de ce module, il y a des éléments spécifiques à Gantry qui ne doivent pas être modifiés. Ce sont:

 
function render($params = array()){
/** @var $gantry Gantry */
global $gantry;
$rparams = $this-> _getParams($params);
$prefixClass = '';
if ($rparams->prefixCount !=0) {
$prefixClass = " rt-prefix-".$rparams->prefixCount;
 }
ob_start();
 // XHTML LAYOUT
 .....

Après ob_start(); se trouve l'endroit ou la mise en page doit être écrite en XHTML.

Après avoir ajouté votre bloc de code XHTML il doit y avoir un retour avec un appel à ob_get_clean(); Ceci est obligatoire pour cette fonction. Une substitution complète ressemble à ceci:

class GantryLayoutMod_Standard extends GantryLayout {
    var $render_params = array(
    'contents' => null,
    'gridCount' => null,
    'prefixCount' => 0,
    'extraClass' => ''
    );
function render($params = array()){
    /** @var $gantry Gantry */
    global $gantry;
    $rparams = $this-> _getParams($params);
    $prefixClass = '';
    if ($rparams->prefixCount !=0) {
    $prefixClass = " rt-prefix-".$rparams->prefixCount;
    }
    ob_start();
// XHTML LAYOUT
    ?>
    <div class="rt-grid-<?php echo $rparams->gridCount.$prefixClass.$rparams->extraClass; ?>">
         <?php echo $rparams->contents; ?>
    </div>
    <?php
    return ob_get_clean();
    }
}

Etape 4: Ajout du layout au template

Ouvrez les index.php du template et trouvez le module pour lequel vous désirez utiliser une mise en page personnalisée.

Modifiez le 2nd paramètre de la fonction displayModules pour y assigner le nom de votre layout crée à l'étape 3. comme dans l'exemple ci-dessous :

        <?php echo $gantry->displayModules('top','example','standard'); ?>