- Introduction
- Classes & Emplacement
- Exemple
- La fonction _createContent
- Zone & Paramètres
- Appel des zones
- depuis un code PHP
- depuis un template Smarty
- Exemple concret, ZoneEphemeride
- Le code de la zone
- Le code du template navigation.tpl
- Voir aussi
Introduction
Les Zones dans Copix sont des objets dont l'objectif est de prendre en charge une partie d'écran, simple et autonome qui peuvent être réutilisés dans un module, dans un même projet ou même dans un autre projet.
On peut vouloir faire des zones pour créer des composants graphiques réutilisables, que l'on utilisera un peu partout dans un site (exemples: Un zone de login, une zone de recherche, une zone des dernières nouvelles, une zone de syndication, ....)
Les zones peuvent nativement tirer parti du cache.
Classes & Emplacement
Les zones héritent de CopixZone, elles sont stockées dans des fichiers nomzone.zone.php dans les répertoires zones des modules et se nomment ZoneNom
Exemple
//dans le fichier zones/exemple.zone.php
class ZoneExemple extends CopixZone {
function _createContent (&$toReturn){
$toReturn = 'Contenu de ma zone';
return true;
}
}
La fonction _createContent
La fonction "_createContent" est en charge de la génération du contenu de la zone. Elle reçoit en paramètre une chaîne de caractères (par référence) dont elle à la charge de remplir le contenu.
Ce contenu sera plus tard affiché là où la zone est appelée.
La fonction _createContent doit retourner un booléen qui indique si la génération du contenu s'est bien passée. Ce paramètre est important car les données ne seront mises en cache que si la fonction _createContent retourne "true".
Zone & Paramètres
Il est possible de passer des paramètres à une zone. Ces paramètres seront récupérés dans la zone via la méthode $this->getParam ().
Exemple
class ZoneExempleParam extends CopixZone {
function _createContent (&$toReturn){
$toReturn = 'La valeur du paramètre PARAM est '.$this->getParam ('PARAM');
return true;
}
}
Note : Il est possible de donner une valeur par défaut aux paramètres si jamais l'appelant ne les spécifie pas, par exemple :
class ZoneExempleParam extends CopixZone {
function _createContent (&$toReturn){
$toReturn = 'La valeur du paramètre PARAM est '.$this->getParam ('PARAM', 'Si paramètre non donné');
return true;
}
}
Appel des zones
depuis un code PHP
$contenuObtenu = CopixZone::process ('mon_module|Exemple');//appel de la zone ZoneExemple dans mon_module/zones/exemple.zone.php
//avec des paramètres
$contenuObtenu = CopixZone::process ('module|NOM_ZONE', array ('PARAM'=>'Valeur du paramètre'));//appel de la zone ZoneExempleParam dans mon_module/zones/exemple.zone.php avec un paramètre PARAM
depuis un template Smarty
{copixzone process=exemple}
{copixzone process=exempleparam PARAM="Valeur du paramètre PARAM"}
Exemple concret, ZoneEphemeride
Par exemple, dans un module, vous avez une partie de l'affichage qui affiche la date et le saint du jour. Cette partie est typiquement une zone. Elle ne sert qu'à l'affichage et n'effectue pas elle même de traitements lourds.
Le code de la zone
class ZoneEphemeride extends CopixZone {
function _createContent (& $toReturn) {
$tpl = new CopixTpl ();
$date = getdate();
$jours = array("dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi");
$mois = array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre");
$tpl->assign('DATE', $jours[$date["wday"]]." ".$date["mday"]." ".$mois[$date["mon"]-1]." ".$date["year"]);
$tpl->assign('SAINT', getTodaysSaint());
$toReturn = $tpl->fetch('navigation.tpl');
return true;
}
private function getTodaysSaint()
{
// on regarde le saint du jour et on le retourne
return TodaysSaint;
}
}
Le code du template navigation.tpl
<p>{$DATE}</p>
<p>{$SAINT}</p>
Voir aussi
- CopixHTMLHeader Qui vous permettra de demander à Copix d'injecter des contenus javascript ou CSS nécessaires à la zone dans le template principal.

