Jump to content

[RÉSOLU] Comment faire tourner du code PHP dans un TPL avec Smarty 3 ?


Recommended Posts

Bonjour,

 

Je viens d'un autre shopping cart qui fonctionne, comme PrestaShop, avec Smarty.

 

Le passage à PrestaShop et à Smarty 3 me désoriente.

 

Afin (d'essayer) de faire fonctionner du PHP dans les TPL Smarty, et comme précisé dans ce post :

 

http://www.prestasho...896#entry507896

 

J'ai changé le fichier /prestashop/tools/smarty/sysplugins/smarty_security.php :

 

public $allow_php_tag = false;

 

Par :

 

public $allow_php_tag = true;

 

Et j'ai changé le fichier /prestashop/tools/smarty/Smarty.class.php :

 

public $allow_php_tag = false;

 

Par :

 

public $allow_php_tag = true;

========================

 

Voici mon problème, pour gérer de façon très basique la loi Chatel, j'ai un code qui fonctionnait parfaitement avant, mais je n'arrive pas à le faire tourner sous PrestaShop + Smarty 3.

 

En voici le début :

 

<div class="chatel">


{assign var="livraison" value=$date|date_format:"%a"}

{assign var="h" value=$date|date_format:"%H"}


{if ($livraison=="Lun" || $livraison=="Mar" || $livraison=="Mer" || $livraison=="Jeu") && $h<"13"}

{"+2 days"|date_format:"%A %e %B %Y"}

{/if}

{if ($livraison == "Lun" || $livraison=="Mar" || $livraison=="Mer") && $h>="13"}

{"+3 days"|date_format:"%A %e %B %Y"}

{/if}

 

Pourriez-vous m'aider ?

 

Merci de votre aide,

 

 

Mao Sait (pas) Tout

Edited by Mao Sait Tout (see edit history)
Link to comment
Share on other sites

Merci de ton aide !

 

Alors, ce code :

{assign var="livraison" value=$date|date_format:"%a"}
{assign var="h" value=$date|date_format:"%H"}
{"+2 days"|date_format:"%A %e %B %Y"} h={$h}

Affiche :

 

Thursday 6 October 2011 h=

 

******

 

Ce code seul :

{"+2 days"|date_format:"%A %e %B %Y"}

Affiche :

 

Thursday 6 October 2011

 

Merci

Link to comment
Share on other sites

  • 7 months later...
  • 11 months later...

[Prestashop] Comment ajouter du code PHP dans un .tpl

Dans le fichier tpl on place le code php entre les balises {php}{/php}. mais ces balises ne sont plus reconnues depuis le passage de la version 2 de smarty à la version 3. L’utilisation de PHP au sein des templates est en effet fortement déconseillé.

Néanmoins, il est possible de retrouver cette possibilité.

Il faut ajouter l’utilisation du fichier de classes « SmartyBC.class.php »

Ce fichier est absent de la version de smarty livrée avec Prestashop 4.1.9

Télécharger la dernière version à l’adresse : http://www.smarty.net/download. Décompresser et copier le fichier « SmartyBC.class.php » dans le dossier /tools/smarty

Modifier le fichier ps\config\smarty.config.inc.php de la façon suivante :

// A la deuxième ligne de code, modifier (respecter la casse)

require_once(_PS_SMARTY_DIR_.'Smarty.class.php');

en :

require_once(_PS_SMARTY_DIR_.'SmartyBC.class.php');

// A la quatrième ligne de code, modifier $smarty = new Smarty();

en :

$smarty = new SmartyBC();

 

Vider le cache smarty

la balise {php} devrait être reconnue dans le .tpl

Link to comment
Share on other sites

L’utilisation de PHP au sein des templates est en effet fortement déconseillé.

 

oui, c'est exactement ça.

 

D'une part ça va à l'encontre de l’intérêt de l'utilisation du smarty et d'autre part c'est une faille potentielle de sécurité.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...