Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

Installation de base

Copiez les fichiers bibliothèques de Smarty du sous-dossier /libs/ de la distribution à un emplacement accessible à PHP. Ce sont des fichiers PHP que vous NE DEVEZ PAS modifier. Ils sont partagés par toutes les applications et ne seront mis à jour que lorsque vous installerez une nouvelle version de Smarty.

Example 2.1. fichiers nécessaires de la bibliothèque SMARTY


Smarty.class.php
Smarty_Compiler.class.php
Config_File.class.php
debug.tpl
/internals/*.php (tous)
/plugins/*.php (tous doivent être sûr, peut-être votre site n'a besoin seulement que d'un sous-ensemble)

    

Smarty utilise une constante PHP appelée SMARTY_DIR qui représente le chemin complet de la bibliothèque Smarty. En fait, si votre application trouve le fichier Smarty.class.php, vous n'aurez pas besoin de définir la variable SMARTY_DIR, Smarty s'en chargera pour vous. En revanche, si Smarty.class.php n'est pas dans votre répertoire d'inclusion ou que vous ne donnez pas un chemin absolu à votre application, vous devez définir SMARTY_DIR explicitement. SMARTY_DIR doit avoir être terminé par un slash.

Example 2.2. Créer une instance de Smarty

Voici comment créer une instance de Smarty dans vos scripts PHP :


<?php
// Note : Smarty a un 'S' majuscule
require_once('Smarty.class.php');
$smarty = new Smarty();
?>

    

Essayez de lancer le script ci-dessus. Si vous obtenez une erreur indiquant que le fichier Smarty.class.php n'est pas trouvé, tentez l'une des actions suivantes :

Example 2.3. Définition manuelle de la constante SMARTY_DIR


<?php
// Style *nix (notez le 'S' majuscule)
define('SMARTY_DIR', '/usr/local/lib/php/Smarty-v.e.r/libs/');

// Style Windows
define('SMARTY_DIR', 'c:/webroot/libs/Smarty-v.e.r/libs/');

require_once(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty();
?>

    

Example 2.4. Définir le chemin absolu au fichier de la bibliothèque


<?php
// Style *nix (notez le 'S' majuscule)
require_once('/usr/local/lib/php/Smarty-v.e.r/libs/Smarty.class.php');

// Style Windows
require_once('c:/webroot/libs/Smarty-v.e.r/libs/Smarty.class.php');

$smarty = new Smarty();
?>

    

Example 2.5. Ajout du dossier contenant la bibliothèque à l'include_path de PHP


<?php
// Editez votre fichier php.ini, ajoutez le dossier contenant la
// bibliothèque Smarty à l'include_path et redémarrez le serveur web.
// Puis, ce qui suit devrait fonctionner :
require_once('Smarty.class.php');
$smarty = new Smarty();
?>

    

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, 'templates/', 'templates_c/', 'configs/' et 'cache/'.

Chacun d'entre eux peut être défini via les attributs $template_dir, $compile_dir, $config_dir et $cache_dir respectivement. Il est vivement conseillé que vous régliez ces répertoires séparément pour chaque application qui utilise Smarty.

Assurez-vous de bien connaître chemin de la racine de votre arborescence Web. Dans notre exemple, la racine est /web/www.example.com/docs/. Seul Smarty accède aux répertoires en question, et jamais le serveur Web. Pour des raisons de sécurité, il est donc conseillé de sortir ces répertoires dans un répertoire en dehors de l'arborescence Web.

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 é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.example.com/smarty/livredor/.

Vous allez avoir besoin d'au moins un fichier à la racine de l'arborescence Web, il s'agit du script auquel l'internaute a accès. Nous allons l'appeler 'index.php' et le placer dans un sous-répertoire appelé /livredor/.

Technical Note

Il est pratique de configurer le serveur Web de sorte que index.php soit identifié comme fichier par défaut de ce répertoire. Aicnsi, si l'on tape http://www.example.com/livredor/, le script index.php soit exécuté sans que index.php ne soit spécifié dans l'URL. Avec Apache, vous pouvez régler cela en ajoutant index.php à la ligne où se trouve DirectoryIndex (séparez chaque entrée par un espace) dans le httpd.conf.

DirectoryIndex index.htm index.html index.cgi index.php
      

Jetons un coup d'oeil à la structure de fichier obtenue :

Example 2.6. Structure de fichiers


/usr/local/lib/php/Smarty-v.e.r/libs/Smarty.class.php
/usr/local/lib/php/Smarty-v.e.r/libs/Smarty_Compiler.class.php
/usr/local/lib/php/Smarty-v.e.r/libs/Config_File.class.php
/usr/local/lib/php/Smarty-v.e.r/libs/debug.tpl
/usr/local/lib/php/Smarty-v.e.r/libs/internals/*.php
/usr/local/lib/php/Smarty-v.e.r/libs/plugins/*.php

/web/www.example.com/smarty/guestbook/templates/
/web/www.example.com/smarty/guestbook/templates_c/
/web/www.example.com/smarty/guestbook/configs/
/web/www.example.com/smarty/guestbook/cache/

/web/www.example.com/docs/guestbook/index.php

    

Smarty a besoin d'accéder en écriture aux répertoires $compile_dir et $cache_dir, assurez-vous donc que le serveur Web dispose de ces droits d'accès. Il s'agit géné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éral dans "/usr/local/apache/conf/") pour déterminer quel est l'utilisateur et le groupe auquel il appartient.

Example 2.7. régler les permissions d'accès


chown nobody:nobody /web/www.example.com/smarty/livredor/templates_c/
chmod 770 /web/www.example.com/smarty/livredor/templates_c/

chown nobody:nobody /web/www.example.com/smarty/livredor/cache/
chmod 770 /web/www.example.com/smarty/livredor/cache/

    

Note

La commande chmod 770 est relativement bien sécurisée, elle donne à l'utilisateur "nobody" et au groupe "nobody" les accès en lecture/écriture aux répertoires. Si vous voulez donner le droit d'accès en lecture à tout le monde (principalement pour pouvoir accéder vous-même à ces fichiers), vous pouvez lui préférer chmod 775.

Nous devons créer le fichier index.tpl que Smarty va charger. Il va se trouver dans le dossier $template_dir.

Example 2.8. Notre /web/www.example.com/smarty/templates/index.tpl



{* Smarty *}

Bonjour, {$name}, Bienvenue dans Smarty !

    

Note technique

{* Smarty *} est un commentaire de template. Il n'est pas obligatoire mais il est bon de commencer tous vos templates avec ce commentaire. Celà rend le fichier facilement reconnaissable en plus de son extension. Les éditeurs de texte peuvent par exemple reconnaître le fichier et adapter la coloration syntaxique.

Maintenant passons à l'édition du fichier index.php. Nous allons créer une instance de Smarty, assigner une valeur à une variable de template et afficher le résultat avec index.tpl.

Example 2.9. Édition de /web/www.example.com/docs/livredor/index.php


<?php
// charge la bibliothèque Smarty
require_once(SMARTY_DIR . 'Smarty.class.php');

$smarty = new Smarty();

$smarty->template_dir = '/web/www.example.com/smarty/livredor/templates/';
$smarty->compile_dir = '/web/www.example.com/smarty/livredor/templates_c/';
$smarty->config_dir = '/web/www.example.com/smarty/livredor/configs/';
$smarty->cache_dir = '/web/www.example.com/smarty/livredor/cache/';

$smarty->assign('name','Ned');

$smarty->display('index.tpl');
?>

    

Note techique

Dans notre exemple, nous avons configuré les chemins absolus pour chacun des répertoires Smarty. Si /web/www.example.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érience) moins générateur d'erreurs de les définir avec des chemins absolus. Celà nous garantit que Smarty récupèrera les bons fichiers.

Et maintenant appelez le fichier index.php avec navigateur Web. Vous devriez voir "Bonjour, Ned, Bienvenue dans Smarty !".

Vous venez de terminer l'installation de base de Smarty !