Néhány alkalommal felmerülhet az igény PHP futtatási lehetőségre TPL fájlban (leginkább include függvény használata esetén), a megvalósítás sajnos általánosságban nehezen szokott összejönni, de mindenképp érdemes próbálkozni vele.
Számtalan okunk lehet arra ha Prestashop sablonfájljaiban PHP-t szeretnénk futtatni. A SMARTY szakemberei szerint nem ajánlatos, azonban lehetnek olyan esetek ahol érdemes használni (vagy nem lehet másképp megvalósítani a célt).
Prestashop 1.3.x és 1.4.x alatt ezeket a megoldásokat javasolták/használták sikerrel (példáimban szinte mindig a php-s include függvényt veszem elő, mivel általában ezen okból kifolyólag szeretnének PHP-t futtatni TPL fájlban):
1.
{include file='mail.php'}
2.
{include_php file="mail.php"}
3.
{include file="$tpl_dir./mail.php"}
4.
{PHP}echo “test”;{/PHP}
Ezek a módszerek sajnos 1.5.x alatti SMARTY-ban már elavultnak számítanak. Így egy másik módszert alkalmazva érhetjük el a célt:
Hozzunk létre egy “block.php_code.php” nevű php-t, a tartalma az alábbi legyen:
<?php
function smarty_block_php_code($params, $content, &$smarty)
{
if (is_null($content))
{
return;
}
if ('<?php' == substr($content,0,5) && '?>' == substr($content, -2))
$content = substr($content,5,-2);
ob_start();
eval($content);
return ob_get_clean();
}
?>
Ezt a fájlt letölthetitek INNEN is.
Ha kész, fel kell tölteni ebbe a mappába: /tools/smarty/plugins/
.
Ezek után már ki lehet próbálni az adott tpl-ben az alábbi kóddal a PHP működését:
{php_code}{literal}<?php
print "---Teszt---";
?>{/literal}{/php_code}
Esetleg include-al, vagy a require függvénnyel (példámban teljes szerver elérési utat megadva):
{php_code}{literal}<?php
require_once('/home/xxxxx/www/tesztdomain.hu/mail.php');
?>{/literal}{/php_code}
PHP futtatása TPL-ben, Prestashopban.
Ha kérdésed van ne habozz velem felvenni a kapcsolatot! 🙂
Eladásra fel! 🙂