Comment créer un nouveau template de page sur Prestashop 1.6

Dans le cadre d’une stratégie de communication, en l’occurrence la réalisation d’une landing page (page d’atterrissage) pour une publicité, j’ai été amené à créer un nouveau modèle de page sur Prestashop pour accueillir de manière très ciblé les visiteurs. Bien entendu, la création d’un nouveau modèle de page peu servir dans bien d’autres circonstances comme la présentation d’une activité spécifique, la mise en avant d’un produit en particulier ou encore la conception d’un nouveau formulaire.

Les objectifs de cet article sont de vous présenter comment créer un nouveau modèle de page sur Prestashop, mais également de comprendre le fonctionnement des éléments / fonctions appelés dans les différents fichiers.

Concevoir un nouveau modèle de page sur Prestashop 1.6

La première étape consiste à créer un fichier d’appel à la racine de votre Prestashop (exemple : montemplate.php) avec les instructions suivantes :

<?php 
require_once(dirname(__FILE__).'/config/config.inc.php');
Controller::getController('MonController')->run();

Ce fichier doit donc, à minima, comporter deux appels. Le premier fait référence au fichier de configurarion config.inc.php dans le but d’avoir accès aux fonctionnalités du Prestashop. Le second, quant à lui, fait appel à une fonction d’exécution du controller lié à notre nouveau template de page.

 

Comme vous le savez déjà, Prestashop fonctionne en MVC (Modèle Vue Controller). Pour créer une nouvelle vue (également appelé un fichier TPL ou un fichier d’affichage) avec la possibilité de définir une URL rewriting et de modifier ses meta-données en back-office, il faut que cette vue soit rattachée à un controller qui fera appel aux fonctionnalités du FrontController (controller contenant les fonctions liées au front-office).

Dans notre cas, nous n’avons pas besoin de créer de modèle particulier, car nous n’avons pas besoin d’interactions particulières avec la base de données. J’entends par interaction particulière : un échange avec la base qui ne serait pas déjà présent dans le modèle rattaché au FrontController (contrôleur dont on va héritier).

 

Une fois que ce premier fichier est créé, vous allez pouvoir définir votre controller. Rendez-vous dans le répertoire /controllers/front/ et créer-le en le nommant de la même manière que dans l’appel précédent, c’est-à-dire : MonController.php (Prestashop vérifie la concordence entre le nom du controller et la classe que vous allez définir dedans, alors restez cohérent). Définissez la classe suivante  :

<?php 
class MonController extends FrontController{ 
 
 public $php_self = 'montemplate'; 
 
 public function init(){ 
 parent::init(); 
 } 
 
 public function initContent(){ 
 parent::initContent(); 
 $this->setTemplate(_PS_THEME_DIR_.'montemplate.tpl'); 
 } 

}

Ce controller se compose d’une classe qui étend du FrontController comme nous avons pu le voir plus haut dans cet article. Au sein de cette classe est définie deux fonctions et une variable publique.

La variable publique $php_self correspond au nom de la page que l’on va créer et à son URL canonique par défaut. Quant aux deux fonctions, elles correspondent à des fonctions d’initialisation du controller et de son contenu, d’où l’appel de la vue montemplate.tpl que l’on va créer pour retranscrire les éléments sur notre nouveau modèle de page.

Il suffit donc de vous rendre dans votre thème (ex : /themes/monthemepresta/montemplate.tpl ) et d’y concevoir votre nouvelle page pour finaliser l’intervention en respectant le nom défini dans votre controller.

 

D’autres astuces sur Prestashop ?

Comment ajouter un lien marque sur une fiche produit

 

Article proposé par Maxime Denizon, webmaster à Paris

Laisser un commentaire

Votre e-mail ne sera pas publié.