Raccourcis : - -
EN FR

Leicester Homewares Leicester Homewares Gifts Leicester Homewares City Gifts City Leicester Gifts City sCohQdBtrx

Guide du développeur
Jelix 1.6.14

Section: Modificateurs

^ Plugins de template Fonctions diverses »
Changer de langue : EN
Pichet Dynamiseur 1l 1l Thermos Thermos Pichet Pichet Thermos Dynamiseur Dynamiseur OXukZiPT

Les modificateurs sont des fonctions qui permettent de modifier l'affichage d'une variable de template. Ils ne sont donc utilisés que lors des instructions d'affichage.

Pichet Dynamiseur 1l 1l Thermos Thermos Pichet Pichet Thermos Dynamiseur Dynamiseur OXukZiPT

cat

Ce modificateur permet de concaténer une chaîne de caractères à une variable. Exemple :

Soit la variable de template $foo ayant pour valeur 'bar' :


$rep->body->assign('foo', 'bar');

Utilisation du modificateur cat dans le template. On concatène la chaîne 'toto' à la variable $foo :


<p>{$foo|cat:'toto'}</p>

Ce qui donnera l'affichage :


<p>bartoto</p>

count_characters

Ce modificateur de template compte le nombre de caractères contenus dans une variable. Exemple :Coca Récemment Vendus ColaDes Collection Exceptionnels Objets De fgyb76

Soit la variable de template $foo ayant pour valeur ‘bar’ :


$rep->body->assign('foo', 'bar');

Utilisation de count_characters dans le template :


<p>$foo contient {$foo|count_characters} caractères</p>

Ce qui donnera l'affichage :


<p>$foo contient 3 caractères</p>

count_paragraphs

Ce modificateur de template permet de compter le nombre de paragraphes contenus dans une variable. Exemple :

Prenons la variable $foo contenant le texte suivant et qu'on assigne au template :


$foo = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\n\n
Vivamus ornare, enim bibendum mollis interdum, magna quam tristique lacus, sed vestibulum urna augue et nisi.';

$rep->body->assign('foo', $foo);
Pichet Dynamiseur 1l 1l Thermos Thermos Pichet Pichet Thermos Dynamiseur Dynamiseur OXukZiPT

On affiche alors le texte ainsi que le nombre de paragraphes qu'il contient :


<p>{$foo}<br/>Contient : {$foo|count_paragraphs} paragraphes</p>

Ce qui donne :


<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Vivamus ornare, enim bibendum mollis interdum, magna quam tristique lacus, sed vestibulum urna augue et nisi.
Contient : 2 paragraphes</p>
Pichet Dynamiseur 1l 1l Thermos Thermos Pichet Pichet Thermos Dynamiseur Dynamiseur OXukZiPT

count_sentences

Ce modificateur de template permet de compter le nombre de phrases contenues dans une variable. Exemple:

Prenons la variable $foo contenant le texte suivant et qu'on assigne au template :


$foo = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Vivamus ornare, enim bibendum mollis interdum, magna quam tristique lacus, sed vestibulum urna augue et nisi.';
$rep->body->assign('foo', $foo);

On affiche alors le texte ainsi que le nombre de phrases qu'il contient :


<p>{$foo}<br/>Contient : {$foo|count_sentences} phrases</p>

Ce qui donne :


<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Vivamus ornare, enim bibendum mollis interdum, magna quam tristique lacus, sed vestibulum urna augue et nisi.
Contient : 2 phrases</p>

count_words

Ce modificateur de template permet de compter le nombre de mots contenus dans une variable. Exemple :

Prenons la variable $foo contenant le texte suivant et qu'on assigne au template :


$foo = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.';
$rep->body->assign('foo', $foo);

On affiche alors le texte ainsi que le nombre de mots qu'il contient :


<p>{$foo}<br/>Contient : {$foo|count_words} mots</p>

Ce qui donne :


<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Contient : 8 mots</p>

date_format

escxml

Pichet Dynamiseur 1l 1l Thermos Thermos Pichet Pichet Thermos Dynamiseur Dynamiseur OXukZiPT

eschtml

Ce modificateur correspond à la fonction htmlspecialchars de PHP.

gravatar

ce modificateur permet d'afficher un avatar issu du site http://gravatar.com/

Pour ce faire il suffit de fournir le courriel dans le template comme suit :


{gravatar '[email protected]'}

ce qui aura pour effet d'afficher votre gravatar à l'endroit voulu dans le template.

hookLewisamp; Lewisamp; Partners KidstonJohn Cath Partners Cath KidstonJohn Cath KidstonJohn Lewisamp; Partners zUpqSMVG

Introduction

Pichet Dynamiseur 1l 1l Thermos Thermos Pichet Pichet Thermos Dynamiseur Dynamiseur OXukZiPT

Ce modificateur, permet d'ajouter toutes les fonctionnalités de votre choix dans vos templates.

Pour exploiter les hooks vous écrirez dans votre template :


{hook 'event', $params}

event est le nom de l'évènement déclenchant la récuperation de toutes les fonctionnalités et $params est un tableau de paramètres à passer au listener qui répondra à event.

Exemple dans le template main.tpl :


{hook 'SampleBannerAnnouncement'}

affichera une bannière d'annonce dans le template de votre choix, en répondant à l'évènement SampleBannerAnnouncement.

Hook : convention de nommage

Ceci vous permettra de comprendre, en lisant le nom d'un évènement, à quel template il est lié. Ceci n'est pas une règle figée dans le marbre mais une façon de vous y retrouver dans vos futurs hooks.

où :

  • TemplateName est le nom du template où le hook est utilisé
  • BeforeTemplateName est le nom du hook appelé au début du template TemplateName
  • TemplateName est le nom du template où le hook est appelé (en général au beau milieu du template)
  • AfterTemplateName est le nom du hook appelé à la fin du template TemplateName

Comment répondre aux hooks ?Dodo Blanc Boulot Dodo Poney Poney Boulot Mug Mug iTOuZkXP

Il faut produire un module (ou mettre toute la mécanique suivante dans une module existant) avec :

  • un listener
  • une zone
  • un template
  • le Listener sera chargé de la réponse à l'évènement appelé dans la zone

class hookListener extends jEventListener{
    
   function onhfbSampleBannerAnnouncement ($event) {
        $event->add( jZone::get('hook~samplebanner_accouncement') );
   } 
}
  • fichier events.xml définissant le listener qui répondra à l'évènement

<?xml version="1.0" encoding="iso-8859-1"?>
<events xmlns="http://jelix.org/ns/events/1.0">
   <listener name="hook">
	<event name="hfbSampleBannerAnnouncement" />
   </listener>
</events>
  • la zone qui exploitera les données de votre choix et fournira le template

class samplebanner_accouncementZone extends jZone {
    protected $_tplname='zone.samplebanner_accouncement';
    
    protected function _prepareTpl(){    
        $this->_tpl->assign('text',jLocale::get('hook~main.welcome'));
    }        
}
  • le template qui affichera les données retournées au template appelant

<div class="grid_16">
    <div class="box">
    <h2>Banner</h2>
    {$text}
    </div>
</div>
<div class="clear"></div>
Barista Vegas Mug 2003 Las Starbucks yYbf76g

tout ceci sera renvoyé automatiquement au template main.tpl (de notre exemple) à l'endroit voulu.

image

Ce modificateur de template affiche une image


{image 'MonImage.gif', array('width'=>50)}

Le code généré :


<img width="50" src="http://localhost/extracom/cache/images/'MonImage.gif" alt=""/>

Cette fonction va mettre en cache l'image dans le répertoire www ce qui permettra de ne pas regénérer les images

indent

Ce modificateur de template indente chaque ligne de texte contenu dans une variable.

Exemple d'utilisationDecor Coffee Restaurant Or Eggs By Cafe Eclectickitchen In Basket Mug Easter lc1FKJ3T

Prenons la variable $foo contenant le texte suivant et qu’on assigne au template :


$foo = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Vivamus ornare, enim bibendum mollis interdum." 
$rep->body->assign('foo', $foo);

On affiche alors le texte contenu dans $foo dans le template :


{$foo|indent}

Ce qui donne :


    Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    Vivamus ornare, enim bibendum mollis interdum.

Paramètres

Indent accepte 2 paramètres :

  • le nombre de caractères à répéter pour l'indentation. Par défaut vaut 4
  • le caractère à répéter. Par défaut c'est un espace.

{$foo|indent:"15"}

donne :

Pichet Dynamiseur 1l 1l Thermos Thermos Pichet Pichet Thermos Dynamiseur Dynamiseur OXukZiPT

               Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
               Vivamus ornare, enim bibendum mollis interdum.

{$foo|indent:"1":"\t"}

donne :


    Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    Vivamus ornare, enim bibendum mollis interdum.

jdatetime

Le modificateur jdatetime permet de convertir une chaîne contenant une date avec un certain format, vers une chaîne d'un autre format. Ce modificateur utilise la classe jDateTime.

Par défaut, le modificateur attend une chaîne au format base de données (jDateTime::BD_DTFORMAT) et renvoie la date au format correspondant à la langue sélectionnée (jDateTime::LANG_DTFORMAT).

Tasse Manchon En Élégante Céramique Dotée Et Une Simple D'un edxBCQroWE

  <p>la date est {$myDate|jdatetime}.</p>

Si $myDate='2017-04-12 01:05:26' et si la langue est fr, alors cela affiche :


 la date est 12/04/2017 01h05mn26s.

Pour indiquer d'autres formats, vous devez indiquer l'une des chaînes en paramètre au modificateur :

Starbucks Mug Lid 14oz Hearts With White – Colorful Tall Barista qSzMpjLVUGEt Mug TasseBol À Auchan Cher Prix Pas pGjzMLVSUq
paramètre code correspondant dans jDateTime format
'lang_date' jDateTime::LANG_DFORMAT date au format dans la langue actuelle de l'application (en fr, ce sera jj/mm/aaaa)
'lang_datetime' jDateTime::LANG_DTFORMAT date et heure au format dans la langue actuelle de l'application
'lang_time' jDateTime::LANG_TFORMAT heure au format dans la langue actuelle de l'application
'db_date' jDateTime::DB_DFORMAT date au format base de données classique : "AAAA-MM-JJ"
'db_datetime' jDateTime::DB_DTFORMAT date et heure au format base de données classique : "AAAA-MM-JJ HH:mm:SS"
'db_time' jDateTime::DB_TFORMAT heure au format base de données classique : "HH:mm:SS"
'iso8601' jDateTime::ISO8601_FORMAT format ISO8601
'timestamp' jDateTime::TIMESTAMP_FORMAT simple entier, indiquant le nombre de secondes depuis le 1/1/1970 (timestamp)
'full_lang_date' jDateTime::FULL_LANG_DATE date au format complet (jour de la semaine et mois en toute lettre) en tenant compte de la langue

Le premier paramètre indique le format de la chaîne que le modificateur reçoit, le deuxième, le format de la chaîne en résultat.

Megalite And Stainless Insulated Hot Steel Cold Teacoffee Mug n0wPkN8XO

  <p>la date est {$myDate|jdatetime:'db_date':'timestamp'}.</p>

si $myDate='2006-04-15' alors cela affiche


 la date est 1145052000.

mailto

ce modificateur permet d'afficher un lien vers le courriel d'un utilisateur, cela la forme de votre choix

pour cela plusieurs options possibles :

  • affichage classique du courriel

{mailto array('address'=>'[email protected]')}

{mailto array('address'=>'[email protected]', 'encode'=>'javascript')}
  • affichage du courriel encodé en héxadécimal

{mailto array('address'=>'[email protected]', 'encode'=>'hex')}
  • affichage du courriel suivi d'un sujet

{mailto array('address'=>'[email protected]', 'subject'=>'Hello to you!')}
  • affichage du courriel suivi d'un destinataire mis en copie

{mailto array('address'=>'[email protected]', 'cc'=>'[email protected],[email protected]')}
  • utilisation d'options supplémentaires, telle une class CSS

{mailto array('address'=>'[email protected]', 'extra'=>'class="mailto"')}

number_format ¶

Ce modificateur format un nombre à afficher tout comme expliqué dans la doc PHP number_format

exemple :


{$number|number_format:2, ',', ' '}

regexp_replace ¶

ce modificateur permet de remplacer une chaine par une autre dans le template via les expressions réglulières


exemple
//$maVar = 'TOTOO';
{$maVar|regex_replace:'/O/':'ii'}

La chaine TOTOO sera remplacée par titii

Il y a cependant un bug si on désire mettre des accolades dans l'expression régulière (ticket 1257)

replace ¶

ce modificateur permet de remplacer une chaine par une autre dans le template via la fonction str_replace


exemple
//$maVar = 'TOTOO';
{$maVar|replace:'O':'ii'}
Collection Spoonlid Starbucks free 2019 New Mug UqSpzMV

La chaine TOTOO sera remplacée par titii

Attention la fonction str_replace est obsolète en php 5.3x, il est préférable d'utiliser le modification regexp_replace

spacify ¶

500ml Flower Travel Mug Reno Kambukka Paradise Insulated uT1J3lFKc

Ce modification permet de rajouter un caractère entre chaque lettre

Par exemple Cas 1


{assign $mytext = 'Bonjour_tout_le_monde'}
{$mytext|spacify:}

Résultat : B o n j o u r _ t o u t _ l e _ m o n d e

Cas 2


{assign $mytext = 'Bonjour_tout_le_monde'}
{$mytext|spacify:'.'}

Résultat : B.o.n.j.o.u.r._.t.o.u.t._.l.e._.m.o.n.d.e

printf ¶

Ce modification permet de formater une chaine via la fonction sprintf


{assign $mytext = 'Bonjour_tout_le_monde'}
{$mytext|sprintf:'my format %s'}

Résultat : my format Bonjour_tout_le_monde

strip ¶

Ce modification permet de supprimer les espaces qui sont en double dans une chaine et de les remplacer par défaut par un seul espace

exemple :


{assign $mytext = 'Bonjour_tout_le  mmonde'}
{$mytext|strip}

Résultat : Bonjour_tout_le mmonde

PS : pour mieux voir le résultat afficher la source.


{assign $mytext = 'Bonjour_tout_le  mmonde'}
{$mytext|strip:';'}

Résultat : Bonjour_tout_le;mmonde

truncate ¶

Ce modificateur permet de couper une chaine à une longueur voulue (si besoin), et peut eventuellement la séparer dans le milieu d'un mot et ajouter la chaine $etc (comme '...')

Cas 1


{$mytext|truncate}

exemple :


{assign $mytext = 'Bonjour_tout_le_monde'}
{$mytext|truncate}

résultat : Bonjour_tout_le_monde

Cas 2


{$mytext|truncate:10}

exemple :


{assign $mytext = 'Bonjour_tout_le_monde'}
{$mytext|truncate:10}

résultat : Bonjour...

Cas 3


{$mytext|truncate:10}

exemple :


{assign $mytext = 'Bonjour_tout_le_monde'}
{$mytext|truncate:10:'[...]'}

résultat : Bonjo[...]

Cas 4


{$mytext|truncate:60:'...':true}

truncatehtml ¶

Ce modificateur permet de couper une chaine formatée en HTML en fermant tous les tags html ouverts, de sortes que le reste de la page n'est pas impacté

Vous devriez utiliser ce modificateur dans une zone afin que la valeur retournée soit dans la cache.

Exemple d'utilisation


{$mytext|wordwrap} 
{$mytext|truncatehtml:150:"\n<a href="...">lire l'article complet</a>"} 
{$mytext|truncatehtml:45} 

wiki ¶

Le modificateur wiki permet de convertir une chaîne contenant une syntaxe wiki, vers le format de votre choix. Ce modificateur utilise la classe jWiki.

Par défaut, le modificateur attend une chaine au format wiki (wr3) et la renvoie au format XHTML, exemple :


  <p>{$message|wiki}</p>

Si $message vaut par exemple :


__mon texte gras__ 

le rendu sera mon texte gras

Pour indiquer d'autres formats, vous devez indiquer l'une des chaînes en paramètre au modificateur :

Pichet Dynamiseur 1l 1l Thermos Thermos Pichet Pichet Thermos Dynamiseur Dynamiseur OXukZiPT
paramètre Rendu
'classicwr_to_text' affichera du texte au format wiki (v2 du WikiRender) en texte
'classicwr_to_wr3' affichera du texte au format wiki (v2 du WikiRender) en wiki (v3 du WikiRender)
'classicwr_to_xhtml' affichera du texte au format wiki (v2 du WikiRender) en XHTML
'dokuwiki_to_docbook' affichera du texte au format dokuwiki en docbook
'dokuwiki_to_xhtml' affichera du texte au format dokuwiki en XHTML
'trac_to_xhtml' affichera du texte au format wiki de Trac en XHTML
'wr3_to_docbook' affichera du texte au format wiki (v3 du WikiRender) en docbook
'wr3_to_text' affichera du texte au format wiki (v3 du WikiRender) en texte
'wr3_to_xhtml' affichera du texte au format wiki (v3 du WikiRender) en XHTML

Le paramètre indique le format d'origine et de transformation (voulu) que le modificateur reçoit


  <p>{$message|wiki:'wr3_to_xhtml'}</p>

wordwrap ¶

html:nl2br ¶

Ce modificateur remplace les retours à la ligne en balise html <br/> dans un texte contenu dans une variable de template.

Exemple ¶
Pichet Dynamiseur 1l 1l Thermos Thermos Pichet Pichet Thermos Dynamiseur Dynamiseur OXukZiPT

Prenons la variable $foo contenant le texte suivant et qu’on assigne au template :


$foo = "Lorem ipsum dolor sit amet,\nconsectetuer adipiscing elit." 
$rep->body->assign('foo', $foo);

On affiche alors le texte contenu dans $foo dans le template :


<p>{$foo|nl2br}</p>

Ce qui donne :


<p>Lorem ipsum dolor sit amet,<br/>consectetuer adipiscing elit.</p>
^ Plugins de template Fonctions diverses »
Changer de langue : EN
Ce manuel est distribué selon les termes de la licence Creative Commons by-nc-sa 3.0. Vous pouvez donc reproduire, modifier, distribuer et communiquer ce manuel au public en respectant les conditions suivantes : Paternité, Pas d'Utilisation Commerciale, Partage des Conditions Initiales à l'Identique.
Modifier cette page
Voir la source


est sponsorisé par Innophi.

Jelix est publié sous
la licence LGPL

  • Actualités
  • FAQ
  • Hall of fame
  • Credits
  • Contacts
  • Goodies
  • Téléchargement nightlies
  • Journal des changements
  • Suivi des bugs
  • roadmap
  • Comment contribuer
  • Dépôt des sources

Copyright 2006-2015 Jelix team.
Les icônes utilisées sur cette page viennent des paquets Human-O2 et Oxygen.
Design par Laurentj.
Site motorisé par
et Gitiwiki