Au cours du développement du framework Gantry, nous avons constaté que nous devions organiser des ensembles de paramètres dans des groupes personnalisés de paramètrages associés. Vous pouvez créer vos propres éléments dans  templateDetails.xml pour permettre le réglage des paramètres spécifiques que vous pourrez utiliser plus tard dans vos propres fonctionnalités, mises en page, etc. Un bon exemple de ceci est la chaîne inactive qui contrôle quel élément de menu doit s'afficher lorsque le menu est inactif. Le code XML en question ressemble à ceci:

<param name="inactive" type="chain" label="INACTIVE"  description="INACTIVE_DESC">
    <param name="enabled" type="toggle" default="1" label="ENABLED"  setinmenuitem="false" />
    <param name="menuitem" type="menuitem" label="SELECT_MENU_ITEM" setinmenuitem="false" />
</param>

Ce bloc de paramètre se compose d'un élément chaîne parent. Cet élément a un nom appelé 'inactive'. Au sein de la chaîne, sont deux éléments, dont l'un est un interrupteur appelé 'enabled' et l'autre est un élément menuitem nommé 'menuitem'.

Maintenant, vous pouvez obtenir les valeurs de ces paramètres en utilisant simplement l'appel:

global $gantry;
echo $gantry->get('inactive-enabled');
echo $gantry->get('inactive-menuitem');

Toutefois, dans Gantry, nous avons une fonction pour gérer l'état «inactif» ​​, et nous avons donc une caractéristique essentielle appelé GantryFeatureInactive qui ressemble à:

class GantryFeatureInactive extends GantryFeature {
    var $_feature_name = 'inactive';
    function init() {
        global $gantry, $Itemid;
        $enabled = $this->get('enabled');
        if($enabled) {
            $menus = &JSite::getMenu();
            $menu  = $menus->getActive();
            if (null == $menu){
                $menuitem = $this->get('menuitem');
                $menus->setActive($menuitem);
                $Itemid = $menuitem;
            }
        }
    }
}

Les fonctionnalités par défaut sont à la recherche d'un ensemble de paramètres enchaînés, donc en réglant $_feature_name sur inactive, et à l'aide de la fonctionnalité construit par la méthode get() ,nous n'avons pas besoin d'utiliser le nom complet de la chaine inactive-menuitem, comme la méthode de la fonctionnalité génère automatiquement le préfixe du nom de la fonction pour obtenir le paramètre correct.