Pour personnaliser un Modifieur, il faut une sous classe de patTemplate_Modifier et l’avoir placée dans patTemplate/Modifier. Le nom du fichier a été assorti à la dernière partie du nom de la classe. Ce qui signiphie que si vous souhaitez créer un filtre qui tronque des phrases vous devrez créer une nouvelle classe ‘pat_Template_Modifier_Truncate’ et la placer dans patTemplate/Modifier/Truncate.php.
La classe doit implementer une méthode modify( string value, array params ) qui a comme retour la valeur modifiée. Vous pouvez intégrer des méthodes pour modifier la valeur quels que soit vos envies.
patTemplate passera 2 paramètres à votre méthode:
Le modificateur truncate peut ressembler à ceci:
01 <?PHP 02 /** 03 * patTemplate modifier Truncate 04 * 05 * $Id: modifiers.xml,v 1.1 2004/05/11 19:46:09 schst Exp $ 06 * 07 * @package patTemplate 08 * @subpackage Modifiers 09 * @author Stephan Schmidt <schst@php.net> 10 */ 11 class patTemplate_Modifier_Truncate extends patTemplate_Modifier 12 { 13 /** 14 * truncate the string 15 * 16 * @access public 17 * @param string value 18 * @return string modified value 19 */ 20 function modify( $value, $params = array() ) 21 { 22 /** 23 * pas de longueur spécifié 24 */ 25 if( !isset( $params['length'] ) ) 26 return $value; 27 28 /** 29 * est plus court que la longueur de value 30 */ 31 if( $params['length'] >strlen( $value ) ) 32 return $value; 33 34 return substr( $value, 0, $params['length'] ) . '...'; 35 } 36 } 37 ?>
Si vous copiez ce fichier dans le répertoire Modifier, vous pouvez immédiatement utiliser ceci dans vos fichiers de template, par spécification dans l’attribut modifier de chaque balise <patTemplate:var/>.
01 <patTemplate:tmpl name="page"> 02 <div> 03 <patTemplate:var name="myVar" modifier="Truncate" length="50"/> 04 </div> 05 </patTemplate:tmpl>
Si maintenant vous passez une valeur plus longue que 50 caractères, le modifieur va automatiquement la tronquer, avant de l’inserer dans le template.