11 février 2016 jef

Comment ajouter un hook dans prestashop 1.6

Personnaliser votre thème – comment ajouter un hook dans prestashop 1.6

La gestion des hooks sur Prestashop 1.6, est relativement simple. En plus de l’éditeur visuel qui permet de déplacer la position des modules selon l’emplacement où ils sont greffés (le live-edit du back office dans le sous menu modules -> positions) , le back-office permet également de les réagencer de façon rapide et précise. Il peut arriver que l’on aie besoin d’ ajouter un hook personnalisé sur son thème, comme par exemple pour afficher du contenu sur toutes les pages produit.
Pour ajouter cette nouvelle position dans votre thème, il y a des étapes à respecter.
Il existe deux procédés pour ajouter un hook. Quel que soit la méthode utilisée, un nouveau Hook doit être créé dans la table ps_hook de la base de données. L’une des méthodes consiste à ajouter manuellement via la base de données un nouveau crochet dans la table hook, l’autre consistera à le créer directement lors de la fabrication d’un nouveau module à l’aide d’une fonction.

Comment ajouter des hooks personnalisés sur prestashop 1.6 ?

C’est ce que je vais vous apprendre dans ce tuto, en procédant avec la méthode manuelle.

1ère étape ajouter le hook dans la base de données 

Dans la base de données de Prestashop se trouve une table nommée ps_hook (selon le préfixe que vous avez choisi de donner à vos tables).

vue de la base de donnees prestashop

base de données Prestashop sur PfpMyAdmin, cette table liste tous les hooks disponibles sur votre Prestashop

Il faut ajouter un hook à cette table. La requête à effectuer est la suivante :

requete-sql-insertion-table-hook

requête sql pour l’ajout d’un hook dans prestashop

 

 

Avec ceci nous avons donc précisé le nom du hook, son titre, une petite description, une visibilité, et si l’on peut le gérer via live edit.
Notez au passage que l’identifiant du hook est en auto-incrément, inutile donc de le renseigner.
Si vous ne maîtrisez pas les requêtes sql, vous pouvez également insérer une nouvelle ligne dans la base de données manuellement.

Pour cela rendez vous dans la table ps_hook et cliquez sur l’onglet insérer et remplissez les différents champs.

formulaire de phpmyadmin pour ajouter une ligne à la table ps_hook

le formulaire d’insertion dans phpmyadmin

2ème étape Overrider la classe FrontController 

Il éxiste plusieurs méthode pour apprendre à Prestashop que ce nouveau hook éxiste.
Par exemple, on peut trouver dans le répertoire ‘Controller->Front les différents fichiers qui permettent la construction des contenu de template du thème. En fait chaque page du site dispose de son template (ou sa combinaison de templates ) Ceux-ci sont rangés dans le dossier thème. Et chacune des page dispose également de son fichier controller (aussi bien pour le front que pour l’admin)

On pourrait donc se contenter de modifier le code d’un controller pour lequel on souhaite utiliser notre nouveau hook.
Mais il y a mieux encore, nous allons modifier un controller général du front-office : le FrontController, En modifiant ce fichier ou plus précisément en créant un override de celui-ci, cela nous permettra d’utiliser notre nouveau hook où bon nous semble.

Le FrontController.php se trouve dans le dossier /classes/controllers/FrontController.php.

Nous allons juste utiliser une partie du code, légèrement modifié pour l’enregistrer sous un nouveau fichier FrontController.php que l’on place dans le dossier /override/classes/controllers.

Lorsque l’on ajoute un fichier dans ce dossier override, on le protège d’un écrasement par une mise à jour de Prestashop.
Quand il ya mise à jour de Prestashop, les dossiers et fichiers situés dans l’override ne sont pas écrasés par la nouvelle version.

Le code à ajouter est celui-ci :

code du fichier FrontController overrider

le code de l’Override du fichier FrontControler

Le nouveau hook est presque prêt

3ème étape Afficher son hook sur le thème 

Pour afficher notre contenu dans ce Hook, il faut l’ajouter dans le template de notre choix.

Ouvrez le fichier TPL de votre thème où vous souhaitez ajouter votre hook, et placer le code d’insertion du hook :

{hook h= »DisplayMonHook »} 

 

Pour être plus rigoureux dans notre code et afin de pouvoir paramétrer en css le contenu de ce hook on ajoute une classe au hook en l’encapsulant dans une div comme ceci :

< div class= »MonHook »>

{hook h= »DisplayMonHook »}

</div>

Avant de l’utiliser pensez à vider votre cache, vous pouvez le faire via le back-office ou en supprimant le fichier class_index.php qui se trouve dans le dossier cache

Utilisation du hook 

Pour utiliser un module sur ce nouveau crochet, il vous faut l’appeler par une fonction dans le fichier php du module. Par exemple pour le module bloccms :

public function hookDisplayMonHook($params)

{

return $this->displayBlockCMS(BlockCMSModel::RIGHT_COLUMN);

 

}

les paramètres entre les accolades affichent le contenu de bloc CMS comme il est affiché pour la colonne de droite.

Greffez le module sur ce nouveau hook, qui apparait maintenant dans la liste des hooks disponibles et le résultat devrait apparaitre sans problème !

Retrouvez l’ensemble des codes dans le pdf

Télécharger le tuto : Prestashop – Ajouter des hooks dans prestashop 1.6

Besoin d’aide pour l’adaptation de votre thème ?

Contactez-moi

Retrouvez prochaînement ce tuto sur la chaine youtube de Jeform et pour ne rien zapper des prochains tutos abonnez vous à la chaîne

PDF24    Envoyer l'article en PDF   
Tagged: , , , , ,

Comments (6)

    • jef

      Bonjour,
      Ravi de voir que mon article puisse vous intéresser, une petite lecture approfondie vous permettra de trouver en fin d’article le lien vers le pdf ou vous retrouvez les différents codes du tuto…
      Enjoy !

  1. Phil

    Y’en a de ces bouffons …
    Tu leur fait tout le boulot et encore ils se permettent de critiquer.
    Heureusement celui-ci s’appelle ‘De passage’ il ne devrait pas s’éterniser .. 🙂

    Merci pour ces explications claires et précises

    Phil

  2. Stephanie ADAM

    Bonjour, merci pour ce tuto ! C’est super clair, et je me suis servie du pdf… moi ! 🙂

    Je débute, et est ce que vous pourrier me dire comment modifier le blockbestsellers pour ajouter le hook (que je fais afficher sur la page categorie sous les sous-categories…)
    Merci d’avance

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *