Prestashop : Ajouter un Hook dans Prestashop 1.4

Précédemment, j’ai rédigé un article expliquant comment greffer des nouveaux modules Prestashop sur des nouveaux Hook. Malheureusement, cette méthode a changé à partir de la version 1.4. Pas d’inquiétude, la nouvelle démarche est aussi facile à mettre en oeuvre.

Rappelez-vous, dans les versions précédentes, il y avait trois étapes lors de l’ajout d’un Hook :

  • 1 – Modification de la base de données
  • 2 – Adaptation du fichier header.php
  • 3 – Insertion du Hook dans la page TPL.

Dans cette nouvelle version, seule l’étape 2 est différentes.

Reprenons ces étapes dans l’ordre.

La première étape consiste à indiquer à la base de données qu’une nouvelle position est souhaitée.

La plus simple façon de le faire et d’utiliser PhpMyAdmin pour faire la manipulation. Ouvrez votre base de données et recherchez la table ps_hook (ps est à remplacer par votre prefixe). Cliquez sur SQL et copiez-collez le code ci-dessous :


INSERT INTO 'cabines_hook' ( 'name', 'title', 'description', 'position', 'live_edit') VALUES ( 'mon_hook', 'mon_hook', NULL, 1, 1);

Dans cet exemple, mon_hook est le nom du Hook Prestashop que nous souhaitons ajouter. Vous pouvez remplacer mon_hook parce que vous désirez.

La seconde étape change sur cette nouvelle version de Prestashop. Le fichier à modifier n’est plus /header.php mais le fichier /classes/FrontController.php

Ouvrez ce fichier. A la ligne 450 se trouve le script qui assigne les hook à smarty.

Le premier ajouter est :


'HOOK_HEADER' => Module::hookExec('header'),

Vous pouvez ajouter votre nouveau module au dessus de celui-ci :


'HOOK_MON_HOOK' => Module::hookExec('mon_hook'),

Le rendu sera donc:


self::$smarty->assign(array(
'HOOK_MON_HOOK' => Module::hookExec('mon_hook'),
'HOOK_HEADER' => Module::hookExec('header'),
'HOOK_TOP' => Module::hookExec('top'),
'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn')
));

La dernière étape est similaire aux anciennes versions de Prestashop. Il suffit de positionner le module dans votre fichier TPL, en l’appelent de cette façon :


{$HOOK_MENU}

L’ajout de de Hook ne peut pas encore se faire directement depuis le Back-office. Espéront qu’il le sera dans les prochaines versions car ce n’est pas complexe à mettre en place.

2 réflexions sur “ Prestashop : Ajouter un Hook dans Prestashop 1.4 ”

  1. Bonjour, après plusieurs semaine de recherche sur divers forum, après de multiples tentative rester en échec, peut être pouvez-vous m’aider, j’avoue être à court d’idée…
    Je veux intégrer mon bloc panier et mon bloc mon compte dans mon header à droite un peu comme le style
    Mais c’est à en devenir fous, pas moyen de placer ne fusse que le panier dans mon header.
    Il est pourtant placer sur le top page comme vous avez énoncer plus haut…
    Pas moyen non plus de le faire bouger dans le blockuserinfo.css, il reste figer la ou il est.
    Si vous avez une idée qui fonctionne, je suis preneur….
    Mon site est en ligne : http://www.estephil.com , j’espère avoir une réponse positive et  » assez rapide  »
    J’ai tenter ton astuce aussi mais ça ne marche pas non plus !!!
    Je suis en prestashop 1.4.5 (thème personnalisé ) pas par moi bien entendu…