mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-04 06:11:37 +01:00 
			
		
		
		
	
		
			
	
	
		
			428 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			428 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								<part id="getting.started">
							 | 
						|||
| 
								 | 
							
								 <title>Pour commencer</title>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								 <chapter id="what.is.smarty">
							 | 
						|||
| 
								 | 
							
								   <title>Qu'est-ce que Smarty ?</title>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Smarty est un moteur de template pour PHP. Plus pr<70>cis<69>ment, il facilite
							 | 
						|||
| 
								 | 
							
								   la s<>paration entre la logique applicative et la pr<70>sentation.
							 | 
						|||
| 
								 | 
							
								   Cela s'explique plus facilement dans une situation o<> le
							 | 
						|||
| 
								 | 
							
								   programmeur et le designer de templates jouent des r<>les diff<66>rents, ou,
							 | 
						|||
| 
								 | 
							
								   comme la plupart du temps, sont deux personnes distinctes.
							 | 
						|||
| 
								 | 
							
								   Supposons par exemple que vous concevez une page Web qui affiche un
							 | 
						|||
| 
								 | 
							
								   article de newsletter. Le titre, le sous-titre, l'auteur et le corps
							 | 
						|||
| 
								 | 
							
								   sont des <20>l<EFBFBD>ments de contenu, ils ne contiennent aucune information
							 | 
						|||
| 
								 | 
							
								   concernant la pr<70>sentation. Ils sont transmis <20> Smarty par l'application,
							 | 
						|||
| 
								 | 
							
								   puis le designer de templates <20>ditent les templates et utilisent une
							 | 
						|||
| 
								 | 
							
								   combinaison de balises HTML et de balises de templates pour formater
							 | 
						|||
| 
								 | 
							
								   la pr<70>sentation de ces <20>l<EFBFBD>ments (tableaux HTML, couleurs d'arri<72>re-plan,
							 | 
						|||
| 
								 | 
							
								   tailles des polices, feuilles de styles, etc.). Un beau jour le programmeur
							 | 
						|||
| 
								 | 
							
								   a besoin de changer la fa<66>on dont le contenu de l'article
							 | 
						|||
| 
								 | 
							
								   est r<>cup<75>r<EFBFBD> (un changement dans la logique applicative). Ce
							 | 
						|||
| 
								 | 
							
								   changement n'affecte pas le designer de templates, le contenu
							 | 
						|||
| 
								 | 
							
								   arrivera toujours au template de la m<>me fa<66>on. De m<>me, si le
							 | 
						|||
| 
								 | 
							
								   le designer de templates veut changer compl<70>tement l'apparence
							 | 
						|||
| 
								 | 
							
								   du template, aucun changement dans la logique de l'application
							 | 
						|||
| 
								 | 
							
								   n'est n<>cessaire. Ainsi le programmeur peut changer la logique
							 | 
						|||
| 
								 | 
							
								   de l'application sans restructurer les templates, et le designer
							 | 
						|||
| 
								 | 
							
								   de templates peut changer les templates sans briser la logique
							 | 
						|||
| 
								 | 
							
								   applicative.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Et maintenant un mot rapide sur ce que Smarty NE fait PAS. Smarty n'a
							 | 
						|||
| 
								 | 
							
								   pas pour pr<70>tention de supprimer compl<70>tement les traitements au sein des
							 | 
						|||
| 
								 | 
							
								   templates.
							 | 
						|||
| 
								 | 
							
								   Il est tout <20> fait envisageable de recontrer un traitement dans un template,
							 | 
						|||
| 
								 | 
							
								   <20> condition que ce dernier ne d<>sserve que des besoins de pr<70>sentation.
							 | 
						|||
| 
								 | 
							
								   Un conseil : laissez la logique applicative en dehors des templates et
							 | 
						|||
| 
								 | 
							
								   la logique de pr<70>sentation en dehors de l'application. A l'avenir, cela permet
							 | 
						|||
| 
								 | 
							
								   une meilleure gestion des <20>v<EFBFBD>nements.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   L'un des aspects unique de Smarty est la compilation des templates.
							 | 
						|||
| 
								 | 
							
								   Cela signifie que Smarty lit les templates et cr<63>e des scripts PHP <20> partir
							 | 
						|||
| 
								 | 
							
								   de ces derniers. Une fois cr<63><72>s, ils sont ex<65>cut<75>s.
							 | 
						|||
| 
								 | 
							
								   Il n'y a donc pas d'analyse co<63>teuse de template <20> chaque requ<71>te,
							 | 
						|||
| 
								 | 
							
								   et les templates peuvent b<>n<EFBFBD>ficier des solutions de cache PHP
							 | 
						|||
| 
								 | 
							
								   comme Zend Accelerator (http://www.zend.com) ou PHP Accelerator
							 | 
						|||
| 
								 | 
							
								   (http://www.php-accelerator.co.uk).
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								    Quelques caract<63>ristiques de Smarty :
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <itemizedlist>
							 | 
						|||
| 
								 | 
							
								    <listitem><para>Il est tr<74>s rapide.</para></listitem>
							 | 
						|||
| 
								 | 
							
								    <listitem><para>Il est efficace, le parser PHP s'occupe
							 | 
						|||
| 
								 | 
							
								    du sale travail.</para></listitem>
							 | 
						|||
| 
								 | 
							
								    <listitem><para>Pas d'analyse de template co<63>teuse, une seule compilation.
							 | 
						|||
| 
								 | 
							
								    </para></listitem>
							 | 
						|||
| 
								 | 
							
								    <listitem><para>Il sait ne recompiler que les fichiers de templates
							 | 
						|||
| 
								 | 
							
								    qui ont <20>t<EFBFBD> modifi<66>s.</para></listitem>
							 | 
						|||
| 
								 | 
							
								    <listitem><para>Vous pouvez cr<63>er des <link linkend="language.custom.functions">
							 | 
						|||
| 
								 | 
							
								    fonctions utilisateurs</link> et des <link linkend="language.modifiers">
							 | 
						|||
| 
								 | 
							
								    modificateurs de variables</link> personnalis<69>s, le langage de
							 | 
						|||
| 
								 | 
							
								    template est donc extr<74>mement extensible.</para></listitem>
							 | 
						|||
| 
								 | 
							
								    <listitem><para>Syntaxe des templates configurable, vous
							 | 
						|||
| 
								 | 
							
								    pouvez utiliser {}, {{}}, <!--{}-->, etc comme d<>limiteurs.
							 | 
						|||
| 
								 | 
							
								    </para></listitem>
							 | 
						|||
| 
								 | 
							
								    <listitem><para>Les instructions if/elseif/else/endif
							 | 
						|||
| 
								 | 
							
								    sont pass<73>es au parser PHP, la syntaxe de l'expression {if...}
							 | 
						|||
| 
								 | 
							
								    peut <20>tre aussi simple ou aussi complexe que vous
							 | 
						|||
| 
								 | 
							
								    le d<>sirez.</para></listitem>
							 | 
						|||
| 
								 | 
							
								    <listitem><para>Imbrication illimit<69>e de sections,
							 | 
						|||
| 
								 | 
							
								    de 'if', etc. autoris<69>e.</para></listitem>
							 | 
						|||
| 
								 | 
							
								    <listitem><para>Il est possible d'inclure du code PHP
							 | 
						|||
| 
								 | 
							
								    directement dans vos templates, bien que cela ne soit pas obligatoire
							 | 
						|||
| 
								 | 
							
								    (ni conseill<6C>), vu que le moteur est extensible.</para></listitem>
							 | 
						|||
| 
								 | 
							
								    <listitem><para>Support de cache int<6E>gr<67>.</para></listitem>
							 | 
						|||
| 
								 | 
							
								    <listitem><para>Sources de templates arbitraires.</para></listitem>
							 | 
						|||
| 
								 | 
							
								    <listitem><para>Fonctions de gestion de cache personnalisables.</para></listitem>
							 | 
						|||
| 
								 | 
							
								    <listitem><para>Architecture de plugins</para></listitem>
							 | 
						|||
| 
								 | 
							
								   </itemizedlist>
							 | 
						|||
| 
								 | 
							
								 </chapter>
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 <chapter id="installation">
							 | 
						|||
| 
								 | 
							
								  <title>Installation</title>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  <sect1 id="installation.requirements">
							 | 
						|||
| 
								 | 
							
								   <title>Ce dont vous avez besoin</title>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Smarty n<>cessite un serveur Web utilisant PHP 4.0.6 ou sup<75>rieur.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								  </sect1>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  <sect1 id="installing.smarty.basic">
							 | 
						|||
| 
								 | 
							
								    <title>Installation de base</title>
							 | 
						|||
| 
								 | 
							
								    <para>
							 | 
						|||
| 
								 | 
							
								    Copiez les fichiers biblioth<74>ques de Smarty du r<>pertoire
							 | 
						|||
| 
								 | 
							
								    /libs/ de la distribution <20> un emplacement accessible <20> PHP.
							 | 
						|||
| 
								 | 
							
								    Ce sont des fichiers PHP que vous NE DEVEZ PAS
							 | 
						|||
| 
								 | 
							
								    modifier. Ils sont partag<61>s par toutes les applications et ne seront
							 | 
						|||
| 
								 | 
							
								    mis <20> jour que lorsque vous installerez une nouvelle version de
							 | 
						|||
| 
								 | 
							
								    Smarty.
							 | 
						|||
| 
								 | 
							
								    </para>
							 | 
						|||
| 
								 | 
							
									<example>
							 | 
						|||
| 
								 | 
							
								     <title>fichiers de la biblioth<74>que SMARTY</title>
							 | 
						|||
| 
								 | 
							
								     <screen>
							 | 
						|||
| 
								 | 
							
								Smarty.class.php
							 | 
						|||
| 
								 | 
							
								Smarty_Compiler.class.php
							 | 
						|||
| 
								 | 
							
								Config_File.class.php
							 | 
						|||
| 
								 | 
							
								debug.tpl
							 | 
						|||
| 
								 | 
							
								/plugins/*.php (tous !)</screen>
							 | 
						|||
| 
								 | 
							
									</example>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Smarty utilise une constante PHP appel<65>e <link
							 | 
						|||
| 
								 | 
							
									linkend="constant.smarty.dir">SMARTY_DIR</link> qui
							 | 
						|||
| 
								 | 
							
									repr<70>sente le chemin complet de la biblioth<74>que Smarty. En fait,
							 | 
						|||
| 
								 | 
							
									si votre application trouve le fichier
							 | 
						|||
| 
								 | 
							
								   <emphasis>Smarty.class.php</emphasis>, vous n'aurez pas
							 | 
						|||
| 
								 | 
							
								   besoin de d<>finir la variable SMARTY_DIR, Smarty s'en chargera pour vous.
							 | 
						|||
| 
								 | 
							
								   En revanche, si <emphasis>Smarty.class.php</emphasis>
							 | 
						|||
| 
								 | 
							
								   n'est pas dans votre r<>pertoire d'inclusion ou que vous ne
							 | 
						|||
| 
								 | 
							
								   donnez pas un chemin absolu <20> votre application, vous
							 | 
						|||
| 
								 | 
							
								   devez d<>finir SMARTY_DIR explicitement. SMARTY_DIR
							 | 
						|||
| 
								 | 
							
								   <emphasis>doit</emphasis> avoir <20>tre termin<69> par un slash.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Voici comment cr<63>er une instance de Smarty dans vos scripts PHP :
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									<example>
							 | 
						|||
| 
								 | 
							
								     <title>cr<63>er une instance de Smarty</title>
							 | 
						|||
| 
								 | 
							
								     <screen>
							 | 
						|||
| 
								 | 
							
								require('Smarty.class.php');
							 | 
						|||
| 
								 | 
							
								$smarty = new Smarty;</screen>
							 | 
						|||
| 
								 | 
							
									</example>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Essayez de lancer le script ci-dessus. Si vous obtenez une erreur indiquant
							 | 
						|||
| 
								 | 
							
								   que le fichier <emphasis>Smarty.class.php</emphasis> n'est pas trouv<75>,
							 | 
						|||
| 
								 | 
							
								   tentez l'une des choses suivantes :
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									<example>
							 | 
						|||
| 
								 | 
							
								     <title>fournir un chemin absolu vers la biblioth<74>que Smarty</title>
							 | 
						|||
| 
								 | 
							
								     <screen>
							 | 
						|||
| 
								 | 
							
								require('/usr/local/lib/php/Smarty/Smarty.class.php');
							 | 
						|||
| 
								 | 
							
								$smarty = new Smarty;</screen>
							 | 
						|||
| 
								 | 
							
									</example>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									<example>
							 | 
						|||
| 
								 | 
							
								     <title>Ajouter le r<>pertoire de la biblioth<74>que au chemin de php_include</title>
							 | 
						|||
| 
								 | 
							
								     <screen>
							 | 
						|||
| 
								 | 
							
								// Editez le fichier php.ini, ajoutez le r<>pertoire de la
							 | 
						|||
| 
								 | 
							
								// biblioth<74>que Smarty au include_path et red<65>marrez le serveur Web.
							 | 
						|||
| 
								 | 
							
								// Cela devrait ensuite fonctionner :
							 | 
						|||
| 
								 | 
							
								require('Smarty.class.php');
							 | 
						|||
| 
								 | 
							
								$smarty = new Smarty;</screen>
							 | 
						|||
| 
								 | 
							
									</example>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									<example>
							 | 
						|||
| 
								 | 
							
								     <title>D<>finir explicitement la constante SMARTY_DIR</title>
							 | 
						|||
| 
								 | 
							
								     <screen>
							 | 
						|||
| 
								 | 
							
								define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
							 | 
						|||
| 
								 | 
							
								require(SMARTY_DIR.'Smarty.class.php');
							 | 
						|||
| 
								 | 
							
								$smarty = new Smarty;</screen>
							 | 
						|||
| 
								 | 
							
									</example>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Maintenant que les fichiers de la librairie sont en place,
							 | 
						|||
| 
								 | 
							
								   il est temps de d<>finir les r<>pertoires de Smarty, pour votre application.
							 | 
						|||
| 
								 | 
							
								   Smarty a besoin de quatre r<>pertoires qui sont (par d<>faut)
							 | 
						|||
| 
								 | 
							
								   <emphasis>templates</emphasis>,
							 | 
						|||
| 
								 | 
							
									<emphasis>templates_c</emphasis>, <emphasis>configs</emphasis> et
							 | 
						|||
| 
								 | 
							
									<emphasis>cache</emphasis>. Chacun d'entre eux peut <20>tre d<>fini
							 | 
						|||
| 
								 | 
							
								   via les attributs <emphasis>$template_dir</emphasis>,
							 | 
						|||
| 
								 | 
							
									<emphasis>$compile_dir</emphasis>, <emphasis>$config_dir</emphasis> et
							 | 
						|||
| 
								 | 
							
									<emphasis>$cache_dir</emphasis> respectivement. Il est vivement
							 | 
						|||
| 
								 | 
							
									conseill<6C> que vous r<>gliez ces r<>pertoires s<>par<61>ment pour chaque
							 | 
						|||
| 
								 | 
							
									application qui utilise Smarty.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Assurez-vous de bien conna<6E>tre chemin de la racine
							 | 
						|||
| 
								 | 
							
								   de votre arborescence Web. Dans notre exemple, la racine
							 | 
						|||
| 
								 | 
							
								   est "/web/www.mydomain.com/docs". Seul Smarty
							 | 
						|||
| 
								 | 
							
								   acc<63>de aux r<>pertoires en question, et jamais le serveur Web.
							 | 
						|||
| 
								 | 
							
								   Pour des raisons de s<>curit<69>, il est donc conseill<6C> de
							 | 
						|||
| 
								 | 
							
								   sortir ces r<>pertoires dans un r<>pertoire
							 | 
						|||
| 
								 | 
							
								   <emphasis>en dehors</emphasis> de l'arborescence
							 | 
						|||
| 
								 | 
							
								   Web.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Dans notre exemple d'installation, nous allons r<>gler l'environnement
							 | 
						|||
| 
								 | 
							
								   de Smarty pour une application de livre d'or. Nous avons ici choisi
							 | 
						|||
| 
								 | 
							
								   une application principalement pour mettre en <20>vidence une
							 | 
						|||
| 
								 | 
							
								   convention de nommage des r<>pertoires. Vous pouvez utiliser le m<>me
							 | 
						|||
| 
								 | 
							
								   environnement pour n'importe quelle autre application, il suffit de
							 | 
						|||
| 
								 | 
							
								   remplacer "livredor" avec le nom de votre application. Nous allons
							 | 
						|||
| 
								 | 
							
								   mettre nos r<>pertoires Smarty dans
							 | 
						|||
| 
								 | 
							
								   "/web/www.mydomain.com/smarty/livredor/".
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Vous allez avoir besoin d'au moins un fichier <20> la racine de
							 | 
						|||
| 
								 | 
							
								   l'arborescence Web,
							 | 
						|||
| 
								 | 
							
								   il s'agit du script auquel l'internaute a acc<63>s. Nous allons l'appeler
							 | 
						|||
| 
								 | 
							
								   "index.php" et le placer dans un sous-r<>pertoire
							 | 
						|||
| 
								 | 
							
								   appel<65> "/livredor/". Il est pratique de configurer le serveur Web de
							 | 
						|||
| 
								 | 
							
								   sorte que "index.php" soit identifi<66> comme fichier
							 | 
						|||
| 
								 | 
							
								   par d<>faut de ce r<>pertoire. Aicnsi, si l'on tape
							 | 
						|||
| 
								 | 
							
								   "http://www.mydomain.com/livredor/", le script index.php soit
							 | 
						|||
| 
								 | 
							
								   ex<65>cut<75> sans que "index.php" ne soit sp<73>cifi<66> dans l'URL. Avec Apache
							 | 
						|||
| 
								 | 
							
								   vous pouvez r<>gler cela en ajoutant "index.php" <20> la ligne o<> se
							 | 
						|||
| 
								 | 
							
								   trouve DirectoryIndex (s<>parez chaque entr<74>e par un espace).
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Jetons un coup d'oeil <20> la structure de fichier obtenue :
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									<example>
							 | 
						|||
| 
								 | 
							
								     <title>exemple de structure de fichiers</title>
							 | 
						|||
| 
								 | 
							
								     <screen>
							 | 
						|||
| 
								 | 
							
								/usr/local/lib/php/Smarty/Smarty.class.php
							 | 
						|||
| 
								 | 
							
								/usr/local/lib/php/Smarty/Smarty_Compiler.class.php
							 | 
						|||
| 
								 | 
							
								/usr/local/lib/php/Smarty/Config_File.class.php
							 | 
						|||
| 
								 | 
							
								/usr/local/lib/php/Smarty/debug.tpl
							 | 
						|||
| 
								 | 
							
								/usr/local/lib/php/Smarty/plugins/*.php
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/web/www.mydomain.com/smarty/livredor/templates/
							 | 
						|||
| 
								 | 
							
								/web/www.mydomain.com/smarty/livredor/templates_c/
							 | 
						|||
| 
								 | 
							
								/web/www.mydomain.com/smarty/livredor/configs/
							 | 
						|||
| 
								 | 
							
								/web/www.mydomain.com/smarty/livredor/cache/
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/web/www.mydomain.com/docs/livredor/index.php</screen>
							 | 
						|||
| 
								 | 
							
									</example>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Smarty a besoin d'acc<63>der en <20>criture aux r<>pertoires
							 | 
						|||
| 
								 | 
							
								   <emphasis>$compile_dir</emphasis> et <emphasis>$cache_dir</emphasis>,
							 | 
						|||
| 
								 | 
							
								   assurez-vous donc que le serveur Web dispose de ces droits d'acc<63>s.
							 | 
						|||
| 
								 | 
							
								   Il s'agit g<>n<EFBFBD>ralement de l'utilisateur "nobody" et du group
							 | 
						|||
| 
								 | 
							
								   "nobody". Pour les utilisateurs de OS X, l'utilisateur par d<>faut
							 | 
						|||
| 
								 | 
							
								   est "web" et le group "web". Si vous utilisez Apache, vous pouvez
							 | 
						|||
| 
								 | 
							
								   parcourir le fichier httpd.conf (en g<>n<EFBFBD>ral dans
							 | 
						|||
| 
								 | 
							
								   "/usr/local/apache/conf/") pour d<>terminer quel est l'utilisateur
							 | 
						|||
| 
								 | 
							
								   et le groupe auquel il appartient.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									<example>
							 | 
						|||
| 
								 | 
							
								     <title>r<>gler les permissions d'acc<63>s</title>
							 | 
						|||
| 
								 | 
							
								     <screen>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								chown nobody:nobody /web/www.mydomain.com/smarty/templates_c/
							 | 
						|||
| 
								 | 
							
								chmod 770 /web/www.mydomain.com/smarty/templates_c/
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								chown nobody:nobody /web/www.mydomain.com/smarty/cache/
							 | 
						|||
| 
								 | 
							
								chmod 770 /web/www.mydomain.com/smarty/cache/</screen>
							 | 
						|||
| 
								 | 
							
									</example>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									<note>
							 | 
						|||
| 
								 | 
							
									 <title>Note technique</title>
							 | 
						|||
| 
								 | 
							
									 <para>
							 | 
						|||
| 
								 | 
							
									 La commande chmod 770 est relativement bien s<>curis<69>e, elle donne
							 | 
						|||
| 
								 | 
							
								    <20> l'utilisateur "nobody" et au groupe "nobody" les acc<63>s en
							 | 
						|||
| 
								 | 
							
								    lecture/<2F>criture aux r<>pertoires. Si vous voulez donner le droit d'acc<63>s
							 | 
						|||
| 
								 | 
							
								    en lecture <20> tout le monde (principalement pour pouvoir acc<63>der
							 | 
						|||
| 
								 | 
							
								    vous-m<>me <20> ces fichiers), vous pouvez lui pr<70>f<EFBFBD>rer chmod 775.
							 | 
						|||
| 
								 | 
							
									 </para>
							 | 
						|||
| 
								 | 
							
									</note>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Nous devons cr<63>er le fichier index.tpl que Smarty va charger.
							 | 
						|||
| 
								 | 
							
								   Il va se trouver dans $template_dir.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									<example>
							 | 
						|||
| 
								 | 
							
								     <title>Edition de  /web/www.mydomain.com/smarty/templates/index.tpl</title>
							 | 
						|||
| 
								 | 
							
								     <screen>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								{* Smarty *}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Hello, {$name}!</screen>
							 | 
						|||
| 
								 | 
							
									</example>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									<note>
							 | 
						|||
| 
								 | 
							
									<title>Note technique</title>
							 | 
						|||
| 
								 | 
							
								   	<para>
							 | 
						|||
| 
								 | 
							
								   	{* Smarty *} est un commentaire de template. Il n'est pas
							 | 
						|||
| 
								 | 
							
								   	obligatoire mais il est bon de commencer tous vos templates
							 | 
						|||
| 
								 | 
							
								   	avec ce commentaire. Cela rend le fichier facilement
							 | 
						|||
| 
								 | 
							
								   	reconnaissable en plus de son extension. Les <20>diteurs
							 | 
						|||
| 
								 | 
							
								   	de texte peuvent par exemple reconna<6E>tre le fichier et
							 | 
						|||
| 
								 | 
							
								   	adapter la coloration syntaxique.
							 | 
						|||
| 
								 | 
							
								   	</para>
							 | 
						|||
| 
								 | 
							
									</note>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Maintenant passons <20> l'<27>dition du fichier index.php. Nous allons
							 | 
						|||
| 
								 | 
							
								   cr<63>er une instance de Smarty, assigner une valeur <20> une variable
							 | 
						|||
| 
								 | 
							
								   de template et afficher le r<>sultat avec index.tpl. Dans notre
							 | 
						|||
| 
								 | 
							
								   exemple d'environnement, "/usr/local/lib/php/Smarty" est dans notre
							 | 
						|||
| 
								 | 
							
								   include_path. Assurez-vous de faire la m<>me chose ou d'utiliser
							 | 
						|||
| 
								 | 
							
								   des chemins absolus.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									<example>
							 | 
						|||
| 
								 | 
							
								     <title><3E>dition de  /web/www.mydomain.com/docs/livredor/index.php</title>
							 | 
						|||
| 
								 | 
							
								     <screen>
							 | 
						|||
| 
								 | 
							
								// charge la biblioth<74>que Smarty
							 | 
						|||
| 
								 | 
							
								require('Smarty.class.php');
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$smarty = new Smarty;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$smarty->template_dir = '/web/www.mydomain.com/smarty/livredor/templates/';
							 | 
						|||
| 
								 | 
							
								$smarty->compile_dir = '/web/www.mydomain.com/smarty/livredor/templates_c/';
							 | 
						|||
| 
								 | 
							
								$smarty->config_dir = '/web/www.mydomain.com/smarty/livredor/configs/';
							 | 
						|||
| 
								 | 
							
								$smarty->cache_dir = '/web/www.mydomain.com/smarty/livredor/cache/';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$smarty->assign('name','Ned');
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$smarty->display('index.tpl');</screen>
							 | 
						|||
| 
								 | 
							
									</example>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									<note>
							 | 
						|||
| 
								 | 
							
									 <title>Note techique</title>
							 | 
						|||
| 
								 | 
							
									 <para>
							 | 
						|||
| 
								 | 
							
									 Dans notre exemple, nous avons configur<75> les chemins absolus
							 | 
						|||
| 
								 | 
							
									 pour chacun des r<>pertoires Smarty. Si
							 | 
						|||
| 
								 | 
							
								    '/web/www.mydomain.com/smarty/livredor/' est dans votre
							 | 
						|||
| 
								 | 
							
								    include_path PHP alors ces r<>glages ne sont pas n<>cessaires.
							 | 
						|||
| 
								 | 
							
								    Quoi qu'il en soit il est plus efficace et (par exp<78>rience)
							 | 
						|||
| 
								 | 
							
								    moins g<>n<EFBFBD>rateur d'erreurs de les d<>finir avec des chemins
							 | 
						|||
| 
								 | 
							
								    absolus. Cela nous garantit que Smarty r<>cup<75>rera les bons fichiers.
							 | 
						|||
| 
								 | 
							
									 </para>
							 | 
						|||
| 
								 | 
							
									</note>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Et maintenant appelez le fichier index.php avec navigateur
							 | 
						|||
| 
								 | 
							
								   Web. Vous devriez voir "Hello, Ned!".
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Vous venez de terminer l'installation de base de Smarty !
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   </sect1>
							 | 
						|||
| 
								 | 
							
								   <sect1 id="installing.smarty.extended">
							 | 
						|||
| 
								 | 
							
								   <title>Configuration avanc<6E>e</title>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Ceci est la suite de <link
							 | 
						|||
| 
								 | 
							
								   linkend="installing.smarty.basic">l'installation de base</link>, veuillez
							 | 
						|||
| 
								 | 
							
								   lire cette derni<6E>re avant de poursuivre.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								   
							 | 
						|||
| 
								 | 
							
								   <para>
							 | 
						|||
| 
								 | 
							
								   Une mani<6E>re un peu plus commode de configurer Smarty est de faire votre
							 | 
						|||
| 
								 | 
							
								   propre classe fille et de l'initialiser selon votre environnement.
							 | 
						|||
| 
								 | 
							
								   De la sorte, nous n'aurons plus besoin de configurer <20> chaques fois les
							 | 
						|||
| 
								 | 
							
								   chemins de notre environnement. Cr<43>ons un nouveau r<>pertoire
							 | 
						|||
| 
								 | 
							
								   "/php/includes/livredor/" et un nouveau fichier appel<65> "setup.php".
							 | 
						|||
| 
								 | 
							
								   Dans notre exemple d'environnement, "/php/includes" est notre
							 | 
						|||
| 
								 | 
							
								   include_path PHP. Assurez-vous de faire la m<>me chose ou alors d'utiliser
							 | 
						|||
| 
								 | 
							
								   des chemins absolus.
							 | 
						|||
| 
								 | 
							
								   </para>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								   <example>
							 | 
						|||
| 
								 | 
							
								    <title><3E>dition de /php/includes/livredor/setup.php</title>
							 | 
						|||
| 
								 | 
							
								    <screen>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// charge la librairie Smarty
							 | 
						|||
| 
								 | 
							
								require('Smarty.class.php');
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// le fichier setup.php est un bon
							 | 
						|||
| 
								 | 
							
								// endroit pour charger les fichiers
							 | 
						|||
| 
								 | 
							
								// de librairies de l'application et vous pouvez
							 | 
						|||
| 
								 | 
							
								// faire cela juste ici. Par exemple :
							 | 
						|||
| 
								 | 
							
								// require('livredor/livredor.lib.php');
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								class Smarty_livredor extends Smarty {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								   function Smarty_livredor() {
							 | 
						|||
| 
								 | 
							
								   
							 | 
						|||
| 
								 | 
							
								   		// Constructeur de la classe. Appel<65> automatiquement
							 | 
						|||
| 
								 | 
							
								   		// <20> l'instanciation de la classe.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										$this->Smarty();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										$this->template_dir = '/web/www.mydomain.com/smarty/livredor/templates/';
							 | 
						|||
| 
								 | 
							
										$this->compile_dir = '/web/www.mydomain.com/smarty/livredor/templates_c/';
							 | 
						|||
| 
								 | 
							
										$this->config_dir = '/web/www.mydomain.com/smarty/livredor/configs/';
							 | 
						|||
| 
								 | 
							
										$this->cache_dir = '/web/www.mydomain.com/smarty/livredor/cache/';
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										$this->caching = true;
							 | 
						|||
| 
								 | 
							
										$this->assign('app_name','Guest Book');
							 | 
						|||
| 
								 | 
							
								   }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}</screen>
							 | 
						|||
| 
								 | 
							
								   </example>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  <para>
							 | 
						|||
| 
								 | 
							
								  Modifions maintenant le fichier index.php pour qu'il utilise "setup.php"
							 | 
						|||
| 
								 | 
							
								  </para>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								   <example>
							 | 
						|||
| 
								 | 
							
								    <title><3E>dition de /web/www.mydomain.com/docs/livredor/index.php</title>
							 | 
						|||
| 
								 | 
							
								    <screen>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								require('livredor/setup.php');
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$smarty = new Smarty_livredor;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$smarty->assign('name','Ned');
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								$smarty->display('index.tpl');</screen>
							 | 
						|||
| 
								 | 
							
								   </example>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  <para>
							 | 
						|||
| 
								 | 
							
								  Vous savez maintenant qu'il est facile de cr<63>er une instance de Smarty,
							 | 
						|||
| 
								 | 
							
								  correctement configur<75>e, en utilisant Smarty_livredor qui initialise
							 | 
						|||
| 
								 | 
							
								  automatiquement tout ce qu'il faut pour votre application.
							 | 
						|||
| 
								 | 
							
								  </para>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  </sect1>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								 </chapter>
							 | 
						|||
| 
								 | 
							
								</part>
							 |