Système de fragment
Le système de fragment permet lors de l'intégration de délimiter des zones d'affichages. Ces zones proposent un contenu par défaut qui pourra être redéfinit depuis les templates de package (ou autre).
Ces zones définissent un contenu par défaut qui peuvent être redéfini depuis les fichiers de templates.
Sommaire
Déclarer un fragment
Cette définition doit être placées dans les pages de layout : (/monsite/themes/pages/layout.html.php.
Il existe plusieurs façon de définir un fragment :
- Les fragments de zone ;
- Les fragments extérieurs ;
- Les fragments en ligne ;
Fragment de zone
Un fragment de zone est délimité par les fonctions declareFragment('nomDuFragment') et endDeclareFragment(). Le contenu situé entre ces deux appels sera affiché par défaut.
<!-- fichier /monsite/themes/layouts/main.html.php --> <?php declareFragment('aside'); ?> <aside> <h2>Aside par défaut</h2> <p>Lorem ipsum :P</p> </aside> <?php endDeclareFragment();?>
Fragments extérieurs
Les fragments extérieurs sont simplement des fichiers inclues en utilisant getFragment("nomFragment"). Les fragments de contenu inclus de cette façon peuvent également être redéfinit depuis les templates de package. [Voir Utilisation des templates et fragments]
<?php echo getFragment('advertising'); ?>
Fragments en ligne
Le fragment en ligne est principalement utilisé pour les contenus simples (un bout de texte par exemple). Les fragments en ligne se déclarent avec la fonction declareFragment(<nomFragment>, <contenu>).
Auteur de cette page : <?php echo declareFragment('auteur', 'Jean-Claude') ?>
Redéfinir les fragments
Depuis un template (par exemple depuis un package : /monsite/SydonieDocument/Package/templates/view.tpl.php), on peut utiliser les fonctions beginFragment(name) et endFragment() pour redéfinir le contenu d'un fragment (déclaré préalablement) :
<!-- fichier /monsite/SydonieDocument/Package/templates/view.tpl.php Dans le layout, le fragment 'aside' sera remplacé. --> <?php beginFragment('aside'); ?>> <aside> <h2>Aside redéfinit</h2> <p>Ipsum Lorem :)</p> </aside> <?php endFragment();?>
Ou pour des contenus plus simple comme du texte :
<?php setFragment('auteur', $obj->getAuthor()); ?>
Et on peut aussi y assigner un autre template, ce qui permet de bénéficier de la gestion de la langue :
<?php setFragment('auteur', $ui->display('monTemplate'); ?>