Jump to content

Insérer du php dans un tpl


Recommended Posts

Bonjour

 

Il faut que j'insère une requête sql dans mon product.tpl pour pouvoir y récupérer une variable d'un foreach.

 

Mais dès que je met par ex :

{php}echo "hello!"{/php}

ça me fait une fatal error :

Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "/home/site/public_html/themes/site/product.tpl" on line 280 "{php}echo "hello!"{/php}" unknown tag "php"' in /home/site/public_html/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php:667
Stack trace:
#0 /home/site/public_html/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php(453): Smarty_Internal_TemplateCompilerBase->trigger_template_error('unknown tag "ph...', 280)
#1 /home/site/public_html/tools/smarty/sysplugins/smarty_internal_templateparser.php(2393): Smarty_Internal_TemplateCompilerBase->compileTag('php', Array)
#2 /home/site/public_html/tools/smarty/sysplugins/smarty_internal_templateparser.php(3101): Smarty_Internal_Templateparser->yy_r37()
#3 /home/site/public_html/tools/smarty/sysplugins/smarty_internal_templateparser.php(3201): Smarty_Internal_Templateparser->yy_reduce(37) #4 /home/site/public_html/tools/smarty/sysplugins/smarty_ in /home/site/public_html/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 667

Et dans tools/smarty/Smarty.class.php j'ai mis public $allow_php_templates à true (au lieu de false).

 

Je suis sur un Presta 1.5.6.2.  J'avais déjà mis du php dans un presta 1.4.3. et je n'avais pas eu de pb..

 

Il y a une manip à faire pour que ça fonctionne ?

Merci d'avance

Link to comment
Share on other sites

Bon, j'ai fini par trouver une astuce :

Pour forcer leur utilisation, il faut modifier le fichier config/smarty.config.inc.php :

Aller aux lignes 29 à 33 :

define('_PS_SMARTY_DIR_', _PS_TOOL_DIR_.'smarty/');
require_once(_PS_SMARTY_DIR_.'Smarty.class.php');
global $smarty;
$smarty = new Smarty();
$smarty->setCompileDir(_PS_CACHE_DIR_.'smarty/compile');

Et changer les par :

define('_PS_SMARTY_DIR_', _PS_TOOL_DIR_.'smarty/');
require_once(_PS_SMARTY_DIR_.'SmartyBC.class.php');
global $smarty;
$smarty = new SmartyBC();
$smarty->setCompileDir(_PS_CACHE_DIR_.'smarty/compile');

Et voilà ça fonctionne !

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...