Un des principes fondamentaux du framework Gantry est la possibilité d'être ovverridé. Cela lui permet d'être aussi souple que possible afin de répondre aux besoins d'un site ou d'un template. Gantry vous permets de surcharger les mises en page des modules, des Modules Chromes , des layouts, et propose une plateforme pour les surcharges d'extensions. La partie spécifique que nous allons traité dans ce tutoriel sera la surcharge des fonctionnalités (features)
Qu'est-ce qu'une Fonctionnalité (Feature)?
Une fonctionnalité est un élément autonome qui ajoute une utilité spécifique au template. Elles améliorent les fonctionnalités du template et peuvent être configurées de façon générale, ou pour des éléments de menu spécifiques à l'aide de l'interface administrateur Gantry.
Les fonctionnalités sont situées dans /libraries/gantry/features/
et incluent un grand choix de différents types tels que la date, le Copyright, et le logo. Il existe de nombreuses autres fonctionnalités par défaut inclus.
Voici un exemple de la fonctionnalité /libraries/gantry/features/copyright.php
:
<?php defined('JPATH_BASE') or die(); gantry_import('core.gantryfeature'); class GantryFeatureCopyright extends GantryFeature { var $_feature_name = 'copyright'; function render($position) { ob_start(); ?> <div class="clear"></div> <div class="rt-block"> <a href="http://www.rockettheme.com/" title="rockettheme.com" id="rocket"></a> <?php echo $this->get('text'); ?> </div> <?php return ob_get_clean(); } }
Il y a plusieurs éléments dans une fonctionnalité. D'abord, le code suivant définit le fichier comme une fonctionnalité Gantry, important les fonctions nécessaires:
<?php defined('JPATH_BASE') or die(); gantry_import('core.gantryfeature');
Ensuite, la fonctionnalité est alors différenciée par un nom, dans ce cas, GantryFeatureCopyright et 'copyright':
class GantryFeatureCopyright extends GantryFeature { var $_feature_name = 'copyright';
Juste après le nommage de la fonctionnalité, il y a un code de traitement complémentaire qui ne devrait pas être modifié.
function render($position) { ob_start(); ?>
La prochaine zone de la fonctionnalité est la mise en page XHTML, à laquelle vous pouvez ajouter votre code XHTML personnalisé à l'intérieur:
<div class="clear"></div> <div class="rt-block"> <a href="http://www.rockettheme.com/" title="rockettheme.com" id="rocket"></a> <?php echo $this->get('text'); ?> </div>
Après la structure XHTML, vous terminez la fonctionnalité avec ce qui suit:
<?php return ob_get_clean(); } }
Surcharger une fonctionnalité Gantry
Gantry permet aux fonctionnalités d'être surchargées soit en créant une copie directement de la fonction depuis /libraries/gantry/features/
ou en créant un nouveau fichier feature.php file dans /templates/[TEMPLATE]/features/
.
A feature file must follow the format in the section above. There is, in effect, two areas of modification. The first is the name that must be unique. The second is the XHTML layout where you can construct the feature's structure to meet your ends.
Les fonctionnalités et l'Administrateur
Selon le niveau de modification que vous envisagez pour une fonctionnalité particulière, vous pouvez vouloir éditer ses paramètres. Pour cela vous devrez modifier le fichier /templates/[TEMPLATE]/template-options.xml
.
L'élément concerné de ce fichier XML commence par:
<fieldset name="features" label="FEATURES">
Ici vous pouvez repérer le(s) champ(s) pour la fonctionnalité que vous souhaitez modifier comme copyright:
<fields name="copyright" type="chain" label="COPYRIGHT" description="COPYRIGHT_DESC"> <field name="enabled" type="toggle" default="0" label="SHOW" /> <field name="position" type="position" default="copyright-a" label="POSITION" /> <field name="text" type="text" default="Designed by RocketTheme" label="TEXT" class="text-long" /> </fields>