Aller au contenu

October 15, 2013

1

Smarty et Prestashop, comment ça marche ?

Mais à quoi sert ce fameux smarty ?
Qu’est ce que ces fichiers avec l’extension “tpl” dans mon dossier thème ?
Et la syntaxe, elle est bizarre !

Cela peux faire peur au départ mais ne vous inquiétez pas, smarty c’est plutôt simple et bien pensé, je vais tâcher ici de vous expliquer ce façon simple à quoi sert smarty et comment le manipuler pour modifier l’apparence de votre boutique prestashop.

    1. Smarty, c’est quoi ?

“Smarty est un moteur de template pour le langage PHP. Il est rapide et permet la gestion des caches. Il facilite la séparation entre la logique applicative et la présentation.”  Wikipedia

En effet, smarty va nous permettre de gérer une partie du MVC, la vue. Grâce à lui nous allons pouvoir séparer le code php du code html. Et vous allez vite vous rendre compte que cela est vraiment très pratique d’un point de vue organisation et rapidité de développement.

Les fichiers ayant l’extension “.tpl” sont donc des fichiers templates qui ont pour unique objectif : mettre en forme votre site.

    1. Smarty, comment ca marche ?

L’installation est plutôt simple, et son utilisation aussi.

Il s’agit simplement d’inclure la classe Smarty, de l’instancier puis on va utiliser sur cette dernières les fonctions de smarty tel que “assign” ou “display”, ce sont ces fonctions dont vous vous servirez le plus,croyez moi !

Au sein de prestashop, smarty est utilisé via la variable “$smarty” et vous pouvez remarquer qu’on l’utilise dans la quasi-totalité des fichiers php présents à la racine de prestashop.

	$smarty->assign('errors', $errors);
        $smarty->display(_PS_THEME_DIR_.'index.tpl');

Chaque fichier .tpl est lié à au moins un fichier php et on remarquera que pour chaque fichier tpl situé dans votre dossier thème, il existe un fichier php situé dans le dossier racine portant le même nom.

La fonction assign();

Extrêmement utile, elle va vous permettre de passer des variable de votre fichier php vers votre fichier tpl où vous pourrez afficher les données.

Exemple, vous avez une variable $products contenant un tableau de produits, l’affichage de ces dernières doivent se faire dans un fichier tpl. Pour lui transmettre ce tableau, nous allons utiliser cette fonction:

	$smarty->assign('produits', $products);

Nous assignons ici à smarty la variable $products qui sera contenue dans la variable smarty ‘produits‘.
Nous verrons par la suite comment en afficher le contenu dans le tpl.

La fonction display();

Cette fonction va permettre d’afficher le contenu d’un tpl, elle prendra en paramètre le chemin vers le fichier tpl en question.

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

Ici, nous affichons le contenu de index.tpl placé dans notre dossier thème. Cette ligne de code est utilisée dans le fichier index.php, logique non ?
A noter que les assignations doivent être faites impérativement avant l’affichage.

    1. Mais alors, comment j’affiche mes variables dans mon tpl ?

Dans le fichier template, vous allez pouvoir placer du code html, javascript, css et du code smarty.

A noter que pour les bonnes pratiques, il ne faudra pas y placer directement du css et javascript mais plutôt y inclure les fichiers.

Au cas vous souhaitez tout de même le faire, il vous faudra utiliser la balise smarty {literal} afin que le code css et/ou javascript ne soit pas interprété par smarty pour éviter les confusions.

{literal}<script type="text/javascript">// <![CDATA[
mce:0
// ]]></script>
	<!--  #monid { font-weight:bold; }  -->
{/literal}

Pour retrouver notre variable $products que nous avons assigné sous “produits” précédemment, nous allons utiliser la syntaxe suivante : {$produits}, et ce pour n’importe quelle variable assignée.

Voici un exemple pour le cas d’une variable contenant une simple valeur et une autre contenant un tableau de valeurs.

index.php

$smarty-&gt;assign('prenom', 'Jean');
$smarty-&gt;assign('produits', $products);
$smarty-&gt;display(_PS_THEME_DIR_.'index.tpl');

index.tpl

Bonjour {$prenom}
Liste de vos produits :
    {foreach from=$produits item=p}

  • {$p.name} – {$p.price}
  • {/foreach}

Je vous laisse admirer le syntaxe de la boucle foreach, que l’on pourrait comparer en php à :

echo '
    ‘; foreach ( $produits as $p ) echo ‘

  • ‘.$p['name'].’ – ‘.$p['price'].’
  • ‘; echo ‘

';

Normalement, si vous connaissez un minimum le php, vous devriez avoir compris.

Vous retrouverez chez smarty, tous les formats de condition dont vous aurez besoin tel que :

{if $prenom == 'Jean'}{else}{/if}
{if isset($prenom)}{else}{/if}

Vous avez maintenant de quoi vous amuser avec smarty, entrainez vous et découvrez toute sa puissance !

Voici quelques liens pour approfondir vos connaissances sur smarty :

Smarty

Initiation aux templates avec smarty

Les variables globales utiles

Les modifiers

Publié par
Plus d'articles pour la catégorie Tutoriels
10 Commentaires Poster un commentaire
  1. Nov 5 2011

    Enfin je trouve quelqu’un qui m’éclaire sur le fonctionnement de prestashop.
    Merci encore et vous encourage a continuer pour tout ceux qui débute avec le e commerce

    Reply
  2. Jan 19 2012

    Merci, je me lance dans l’aventure e-commerce pour les besoins d’un client et je rame un peu pour personnaliser l’interface.

    Reply
  3. Feb 22 2012

    Bonjour,

    Smarty est un moteur de template vraiment puissant, je rajouterais qu’on peut aussi y faire des calculs, ce qui peut être vraiment intérréssant dans certain cas particulier.

    Reply
  4. mar
    Jul 23 2012

    je suis débutant sur prestashop, j’ai affiché une liste des produits sélectionnées mais je veux afficher pour chaque produit leur catégorie,
    je trouve des problèmes mm pour afficher les catégories a partir du bd .si tu peux m’aider

    Reply
  5. yozyeco
    Aug 17 2012

    Bonjour, j’ai créé une nouvelle page pour un besoin spécifique.
    Donc j’ai créé la page mapage.php, mapageController.php et puis mapage.tpl dans mon thème.

    Maintenant comment est ce que je pourrais afficher la page sur mon site, est ce qu’il faut mettre un lien vers le fichier tpl? Si oui comment faire?

    Merci d’avance.

    Reply
  6. Jan 19 2013

    Moi c’est pire c’est le thème qui me fait ramer..
    je ne sais pas quoi faire j’ai acheté un thème et commencé a installer les article mais ça rame trop long d’une page a l’autre .. qui pourrait m’eclairer svp je ne connais pas grand chose

    Reply
  7. Apr 7 2013

    @yozyeco : je ne sais pas si tu as eu la réponse depuis, mais il faut faire un lien vers la page php et non tpl car la page php va transmettre les données smarty au fichier tpl.

    Reply

Trackbacks & Pingbacks

  1. Créer son propre thème prestashop | Emilien Malbranche | Analyse, Tutoriels et Modules pour votre e-commerce
  2. Smarty et Prestashop, comment ça marche ? | Emilien Malbranche ... | plateformes e-commerce Prestashop et Magento | Scoop.it
  3. Smarty et Prestashop, comment ça marche ? | Emilien Malbranche ... | Prestashop News | Scoop.it

Partagez votre opinion, postez un commentaire.

(requis)
(requis)

Note: Le HTML est autorisé. Votre e-mail (ne sera pas publié).

S'abonner aux commentaires


1 + = 9