
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Waanser &#187; Smarty</title>
	<atom:link href="http://www.waanser.com/category/php/smarty/feed" rel="self" type="application/rss+xml" />
	<link>http://www.waanser.com</link>
	<description>Un blog utilisant WordPress</description>
	<lastBuildDate>Wed, 07 Jul 2010 21:54:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Smarty la base</title>
		<link>http://www.waanser.com/php/smarty/1262-smarty-la-base.html</link>
		<comments>http://www.waanser.com/php/smarty/1262-smarty-la-base.html#comments</comments>
		<pubDate>Wed, 25 Mar 2009 16:30:29 +0000</pubDate>
		<dc:creator>Tiana</dc:creator>
				<category><![CDATA[Smarty]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=1262</guid>
		<description><![CDATA[Les commentaires : Les commentaires dans Smarty sont entourés d&#8217;astérisques, et entourés par les délimiteurs de cette façon : {* Je suis un commentaire Smarty, je n’existe pas dans la sortie compilée.*} Les balises &#60;!&#8211; commentaire html &#8211;&#62; peuvent griser aussi vos éléments smarty mais le contenu sera tout de même interprété donc n’est pas [...]]]></description>
			<content:encoded><![CDATA[<p><u>Les commentaires :</u></p>
<p>Les commentaires dans Smarty sont entourés d&#8217;astérisques, et entourés par les délimiteurs de cette façon :</p>
<p><em>{* Je suis  un commentaire Smarty, je n’existe pas dans la sortie compilée.*}</em></p>
<p>Les balise<strong>s &lt;!&#8211; commentaire html &#8211;&gt;</strong> peuvent griser aussi vos éléments smarty mais le contenu sera tout de même interprété donc n’est pas commenté pour smarty.</p>
<p>Attention ! vous ne pouvez pas imbriquer des commentaires.</p>
<h2>Les fonctions :</h2>
<p>Il existe deux types de fonctions en Smarty, les fonctions natives et les fonctions utilisateurs.</p>
<p>Les fonctions natives sont relatives au traitement interne de Smarty comme {if}, {section}, {literal}</p>
<p>Un exemple  avec <strong>{literal}</strong></p>
<p>Les balises<strong> {literal}</strong> permettent à un bloc de données d&#8217;être pris tel quel, sans qu&#8217;il ne soit interprété par Smarty. Notamment pour les éléments javascript, css, les accolades.</p>
<pre class="brush: html">
{literal}
	&lt;style type= «text/css »&gt;
		.madIdea{
			border :3px outset #ffffff ;
			margin : 2 3 4 5 px ;
			background-color : #001122 ;
			width :400px ;
	}
	&lt;/style&gt;
	&lt;style language=  « JavaScript » type= « text/javascript »&gt;
		function myJsFunction(name, ip){
			alert(« Le nom du serveur \n » + name + « \n » + ip) ;
	}
	&lt;/style&gt;
{/literal}
</pre>
<p><u>Un exemple avec {foreach}</u></p>
<p>Imaginons que vous vouliez récupérer le contenu d’un ou plusieurs champs dans une table via une requête. </p>
<pre class="brush: php">
 {foreach from=$aResultatRequete itemp=InfosTable}
   {$InfosTable.NomColonne}
{/foreach}
</pre>
<p><u>Un exemple avec {if}</u></p>
<p>L&#8217;instruction <strong>{if}</strong> dans Smarty dispose de la même flexibilité que l&#8217;instruction PHP if. Toutes les conditions et fonctions PHP sont reconnues, comme ||, or, &amp;&amp;, and, is_array(), etc.</p>
<pre class="brush: php">
{if $name eq ‘Eric’}
    Bienvenue, Monsieur.
{elseif $name eq ‘Ghyslaine’}
    Bienvenue m’dame.
{else}
  Bienvenue, qui que vous soyez.
{/if}
</pre>
<p>Les fonctions utilisateurs sont des fonctions additionnelles, implémentées par l&#8217;intermédiaire de plugins. Exemples de fonctions utilisateurs <strong>{html_options} {html_image}{cycle}</strong></p>
<p><u>Un exemple avec {html_image}</u></p>
<pre class="brush: html">
{html_image file=’image.jpg’}
{html_image file=’/path/from/docroot/image.jpg}
</pre>
<p>En sortie vous aurez une affichage de votre image.</p>
<p><u>Un exemple avec {cycle}</u></p>
<p>Nous assignons le tableau dans le fichier php.</p>
<pre class="brush: php">
//1. Création et affectation d’un tableau indexé
 $mon_tableau_indexe = array(« Jean-Luc », « Jean », « Sylvain » , «  Eric ») ;

//2. Recencement dans smarty
$oSmarty-&gt;assign(« smarty_mon_tableau_indexe », $mon_tableau_indexe) ;

//3. Affichage du template après passage de l’objet
$oSmarty-&gt;display(« TestSmarty.tpl ») ;
</pre>
<p>Nous bouclons dans le fichier tpl pour l’affichage.</p>
<pre class="brush: php">
{foreach from=$smarty_mon_tableau_indexe item=item}
   &lt;li style=”background-color:{cycle values=”#999999,grey”}; width:100px;”&gt;{$item}{/li}
{/foreach}
</pre>
<p>Et enfin, l’affichage dans le navigateur.</p>
<div id="attachment_1269" class="wp-caption alignnone" style="width: 185px"><a href="http://media.waanser.com/2009/03/smarty6.png"><img src="http://media.waanser.com/2009/03/smarty6.png" alt="smarty" width="175" height="92" class="size-full wp-image-1269" /></a><p class="wp-caption-text">smarty</p></div>
<h2>Variable réservée</h2>
<p>La variable PHP réservée {$smarty} peut être utilisée pour accéder à plusieurs variables d&#8217;environnements.</p>
<p>Un exemple précis où vous voulez obtenir le total d’un ensemble d’éléments. </p>
<pre class="brush: php">
{foreach from=$aResultatRequete name=nbproduct item=product}
       {if $smarty.foreach.nbproduct.last}
           {$smarty.foreach.nbproduct.total}
          &lt;input type=&quot;hidden&quot; name=&quot;nbproduct&quot; id=&quot;nbproduct&quot;  value=&quot;{$smarty.foreach.nbproduct.total}&quot; /&gt;
       {/if}
{/foreach}
</pre>
<h2>Modificateurs de variables </h2>
<p>Nous avons parfois besoin de modifier directement nos variables dans smarty. Il est donc indispensable d’en connaître quelques modificateurs de variables.</p>
<p>Voici quelques uns : 	</p>
<p>upper pour mettre notre variable en majuscule<br />
<strong>{$variable|upper}</strong></p>
<p>lower pour mettre notre variable en miniscule<br />
<strong>{$variable|lower}</strong></p>
<p>Il y a d’autres modificateurs de variables mais les plus fréquents utilisés sont ceux affichés ci-dessus.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/php/smarty/1262-smarty-la-base.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>smarty boite à outils</title>
		<link>http://www.waanser.com/php/smarty/1035-smarty-boite-a-outils.html</link>
		<comments>http://www.waanser.com/php/smarty/1035-smarty-boite-a-outils.html#comments</comments>
		<pubDate>Fri, 06 Mar 2009 14:56:17 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[Smarty]]></category>
		<category><![CDATA[trucs & astuces]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=1035</guid>
		<description><![CDATA[Smarty est un moteur de template vraiment complet. Il offre en effet un pannel de fonction bien utile. Dans ce tutoriel nous allons voir les trucs et astuces connus et méconnus de smarty. Accéder aux variables globales Nous allons voir ici comment accéder aux constantes smarty très simplement. Les constantes Nous avons définis une constante [...]]]></description>
			<content:encoded><![CDATA[<p>Smarty est un moteur de template vraiment complet. Il offre en effet un pannel de fonction bien utile.<br />
Dans ce tutoriel nous allons voir les trucs et astuces connus et méconnus de smarty.</p>
<h2>Accéder aux variables globales </h2>
<p>Nous allons voir ici comment accéder aux constantes smarty très simplement.</p>
<p><strong><u>Les constantes</u></strong></p>
<p>Nous avons définis une constante comme ceci :</p>
<pre class="brush: php">
 define(&#039;WEB&#039;,           &#039;http://www.waanser.com&#039;);
</pre>
<p>Pour accéder à cette session avec smarty il faut faire appel à {$smarty.const.<em>[nom de la constante]</em>}</p>
<p>cela donne :</p>
<pre class="brush: html">
{$smarty.const.WEB}
</pre>
<p><strong><u>Accéder aux sessions </u></strong></p>
<p>Pour accéder aux sessions c&#8217;est un peu près la même méthode :</p>
<pre class="brush: php">
$_SESSION[&#039;waanser&#039;][&#039;url&#039;]=&#039;www.waanser.com&#039;;
</pre>
<p>En smarty on y accède comme cela :</p>
<pre class="brush: html">
$smarty.session. waanser. url
</pre>
<h2>Les tableaux et smarty</h2>
<p>Vous l&#8217;avez certainement remarqué avec les sessions, l&#8217;accès aux données du tableau ce fait avec le point.</p>
<pre class="brush: php">
$aEcole =
	array(&#039;2007&#039;=&gt;
			array(
				&#039;CM2&#039; =&gt; array(&#039;Marc&#039;, &#039;Maude&#039;, &#039;Sophie&#039;),
				&#039;CM1&#039; =&gt; array(&#039;Roul&#039;, &#039;Tilkc&#039;, &#039;Pauline&#039;)
				),
			&#039;2008&#039;=&gt;
			array(
				&#039;CM2&#039; =&gt; array(&#039;Roul&#039;, &#039;Tilkc&#039;, &#039;Pauline&#039;),
				&#039;CM1&#039; =&gt; array(&#039;Henry&#039;, &#039;Manon&#039;, &#039;Dedeweb&#039;,&#039;Laure&#039;)
				)
			);
</pre>
<p>Dans cet exemple, si l&#8217;on veut accéder aux deuxième élève de la classe de CM2 à l&#8217;année 2008 on va saisir :</p>
<p>{$aEcole.2008.CM2.1}</p>
<p><strong><u>Parcourir un tableau avec la boucle foreach</u></strong></p>
<p>Pour parcourir ce tableau nous allons utiliser la fonction foreach de smarty.</p>
<p>{foreach from=<em>NOM DU TABLEAU</em>   item=<em>INDICE </em>key=<em>CLE</em>}</p>
<p>L&#8217;attribut item et key ne sont pas obligatoires.</p>
<p>Ci-dessous l&#8217;exemple de code qui parcourt tout le tableau aEcole :</p>
<pre class="brush: html">
{foreach from=$aEcole item=aAnnee key=sAnnee}
	{$sAnnee} : &lt;br/&gt;
	{foreach from=$aAnnee item=aClasse key=sClasse}
	&lt;ul&gt;&lt;li&gt;{$sClasse}
		{foreach from=$aClasse item=sEleve}
			&lt;ul&gt;&lt;li&gt;{$sEleve}&lt;/li&gt;&lt;/ul&gt;
		{/foreach}
	&lt;/li&gt;&lt;/ul&gt;
	{/foreach}
{/foreach}
</pre>
<p><strong><u>Un compteur avec smarty</u></strong></p>
<p>Si vous avez besoin de mettre un compteur dans votre page, smarty offre la possibilité d&#8217;utiliser des compteurs avec la fonction <strong>{counter}</strong></p>
<p>{counter name=<em>NOM DU COMPTEUR</em> start=<em>POSITION DE DEPART</em> skip=<em>INCREMENT</em> assign=<em>VARIABLE ASSIGNE</em>}</p>
<p>Dans notre exemple, nous allons afficher le nombre d&#8217;élève pour chaque classe.</p>
<pre class="brush: html">
{foreach from=$aEcole item=aAnnee key=sAnnee}
	{$sAnnee} : &lt;br/&gt;
	{foreach from=$aAnnee item=aClasse key=sClasse}
	&lt;ul&gt;&lt;li&gt;{$sClasse}
	{counter name=cCompt start=0 skip=1 assign=iNbEleve}
		{foreach from=$aClasse item=sEleve}
			{counter name=cCompt}
			&lt;ul&gt;&lt;li&gt;{$sEleve}&lt;/li&gt;&lt;/ul&gt;
		{/foreach}
		&lt;ul&gt;nombre d&#039;élève : {$iNbEleve}&lt;/ul&gt;
	&lt;/li&gt;&lt;/ul&gt;
	{/foreach}
{/foreach}
</pre>
<p>Comme vous le voyez à chaque fois que l&#8217;on fait appel à <strong>{counter name=cCompt}</strong> le compteur va s&#8217;incrémenter de 1.</p>
<p>Voila, vous connaissez les fonctions essentielles de smarty. <img src='http://www.waanser.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/php/smarty/1035-smarty-boite-a-outils.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smarty un Générateur de template PHP : Installation</title>
		<link>http://www.waanser.com/php/smarty/295-smarty-un-generateur-de-template-php-installation.html</link>
		<comments>http://www.waanser.com/php/smarty/295-smarty-un-generateur-de-template-php-installation.html#comments</comments>
		<pubDate>Mon, 12 Jan 2009 13:18:18 +0000</pubDate>
		<dc:creator>tilkc</dc:creator>
				<category><![CDATA[Smarty]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[template]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=295</guid>
		<description><![CDATA[Smarty est un Générateur de Templates PHP ( mais c&#8217;est le titre ). Il nous permet de respecter une partie du model MVC : grace a Smarty on sépare bien le php du html. En plus de cette séparation, la compréhension du code Html seul est largement plus facile a lire, et le langage smarty [...]]]></description>
			<content:encoded><![CDATA[<p>Smarty est un Générateur de Templates PHP ( mais c&#8217;est le titre <img src='http://www.waanser.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>
<p>Il nous permet de respecter une partie du model MVC : grace a Smarty on sépare bien le php du html.</p>
<p>En plus de cette séparation, la compréhension du code Html seul est largement plus facile a lire, et le langage smarty n&#8217;a rien de compliquer</p>
<p>(d&#8217;autres article pour plus de détails)</p>
<h1>Téléchargement de Smarty</h1>
<p>Rendez-vous sur le site de <a href="http://www.smarty.net/download.php" target="_blank">Smarty</a> et télécharger la dernière version stable.</p>
<h1>Installation de Smarty</h1>
<p>Copier &#8211; Coller le dossier Smarty-x.x.xx dans le dossier www de votre serveur apache.</p>
<p>Allez dans le dossier Smarty-x.x.xx/libs, nous allons regarder la classe &laquo;&nbsp;Smarty.class.php&nbsp;&raquo;</p>
<p>Nous ne rentrons dans les détails de fonctionnement, ce sont les attributs qui nous intéressent :</p>
<p>- $template_dir =&gt; pointe vers le dossier qui va contenir tous vos templates  &nbsp;&raquo; .tpl&nbsp;&raquo;<br />
- $compile_dir  =&gt; pointe vers le dossier qui va contenir vos templates compilés.<br />
- $config_dir     =&gt; pointe vers le dossier de configuration (perso je m&#8217;en sers jamais)</p>
<p>- $plugins_dir    =&gt; Les plugins sont des script qui s&#8217;executent directement dans smarty, par defaut ils en existent mais vous pourrez créer les votres.<br />
- $cache_dir       =&gt; pointe vers le dossier de cache des templates.</p>
<p>Ici tous les chemins sont configurés pour tester a la racine, par la suite rien ne vous empéche de modifier vos chemins suivant l&#8217;architecture de votre site.</p>
<h1>Exemple : Principe de base</h1>
<p>Créer le dossier TestSmarty dans Smarty-x.x.xx.<br />
Ensuite créer les répertoires templates, et templates_c ainsi que le fichier index.php</p>
<p>Dans le fichier index.php</p>
<pre class="brush: php">

&lt;?php
require &#039;../libs/Smarty.class.php&#039;;

$smarty = new Smarty;
$smarty-&gt;assign(&quot;titre&quot;,&quot;test template Smarty&quot;);
$smarty-&gt;assign(&quot;name&quot;, &#039;Roul&#039;);

$smarty-&gt;display(&#039;index.tpl&#039;);

?&gt;
</pre>
<p>dans le dossier templates on va créer le fichier index.tpl, puisqu&#8217;on l&#8217;appel au dessus.</p>
<pre class="brush: html">

&lt;html&gt;
&lt;head&gt;
&lt;title&gt;{$titre}&lt;/titre&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;Bienvenue {$name}&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Le résultat maintenant est magique :</p>
<div id="attachment_304" class="wp-caption alignnone" style="width: 548px"><img class="size-full wp-image-304" title="resultat_smarty" src="http://media.waanser.com/2009/01/resultat_smarty.jpg" alt="Résultat Template Smarty" width="538" height="170" /><p class="wp-caption-text">Résultat Template Smarty</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/php/smarty/295-smarty-un-generateur-de-template-php-installation.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
