Utiliser phpleague/Plate comme moteur de template dans Prestashop

Pour utiliser Plate comme moteur de template dans vos plugins Prestashop :

  • Téléchargez les sources ici et dézippez les dans un répertoire « mon_plugin/vendor » par exemple.
  • Charger les sources de Plate dans le front controller de votre plugin et indiquer ou se trouve vos vues


class mon_pluginFrontController extends ModuleFrontController {
protected $plates;
...
public function initContent()
{
parent::initContent();
require_once __DIR__.'/../../vendor/plates-3.1.1/src/Engine.php';
require_once __DIR__.'/../../vendor/plates-3.1.1/src/Extension/ExtensionInterface.php';
require_once __DIR__.'/../../vendor/plates-3.1.1/src/Template/Data.php';
require_once __DIR__.'/../../vendor/plates-3.1.1/src/Template/Directory.php';
require_once __DIR__.'/../../vendor/plates-3.1.1/src/Template/FileExtension.php';
require_once __DIR__.'/../../vendor/plates-3.1.1/src/Template/Folders.php';
require_once __DIR__.'/../../vendor/plates-3.1.1/src/Template/Func.php';
require_once __DIR__.'/../../vendor/plates-3.1.1/src/Template/Functions.php';
require_once __DIR__.'/../../vendor/plates-3.1.1/src/Template/Name.php';
require_once __DIR__.'/../../vendor/plates-3.1.1/src/Template/Template.php';
$this->plates = new League\Plates\Engine(__DIR__.'/../../views/templates/front/'); // ici on indique à Plate où se trouve les vues
}
}

  • puis selon la logique de votre code, retourner la sortie du template généré par Plate :


$data = [];
$data = ['info' => 'texte'];
$this->plates->render('template-name', $data);

A noter que dans les futurs versions de Prestashop, Smarty sera probablement optionnel.