Témák

PHP futtatása TPL-ben

PHP futtatása TPL-ben

A cikk eredeti megjelenése: 2013. június 20. – a PrestaShop azóta sokat változott. Az elvek ma is hasznosak lehetnek, de a lépések a mai (8.x, 9.x) verzióknál eltérhetnek. Kérdezz bátran!

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! 🙂

Puizl Attila

PrestaShop fejlesztő · Hivatalos PrestaShop Nagykövet

17 éve készítek, fejlesztek és tartok karban PrestaShop webáruházakat. Több száz hazai és külföldi webshop viseli a kézjegyem, és 2010 óta segítek a magyar PrestaShop közösségben.

Bemutatkozás és ügyfélvélemények →

Szólj hozzá!

Az e-mail címed nem jelenik meg. A hozzászólások jóváhagyás után válnak láthatóvá. Részletek: Adatkezelési tájékoztató.

This site uses Akismet to reduce spam. Learn how your comment data is processed.