Newsroom

Tutoriel - Ajouter un hook dans Prestashop v1.5

Pour modifier le template Prestashop, il faut ajouter ce qu'on appelerait une position dans Joomla, dans Prestashop il s'agit d'un hook. Il faut savoir que Prestashop différencie les différents types de hook, le hook dont on parle ici est un hook Display.

Une première solution, la plus compliquée, consiste à passer par 3 étapes pour créer ce hook (ces trois étapes correspondent en fait la modification du modèle, du contrôleur et de la vue...), comme pour la précédente version 1.4 de Prestashop.

Une deuxième solution consiste à ajouter ce hook en l'attachant à un module, qui ne trouvant pas ce hook, le créera pour vous. Cette solution est bien sûr beaucoup plus simple et aisée, et fait gagner beaucoup de temps, c'est elle que je vais détailler ici:

 

1 - Ajout du hook dans le template


On commence par ajouter le hook dans le template (dans le fichier header.tpl par exemple):

{hook h='displayCenterleftColum'}


2 - Ajout du hook par et pour le module

On fait ensuite d'une pierre deux coups:

On attache notre module à ce hook dans la fonction install() en ajoutant:

$this->registerHook('displayCenterleftColum')

Le hook n'existant pas, Prestashop le créera pour nous automatiquement.

Il ne nous reste ensuite qu'à définir dans notre module, ce que doit afficher le module pour cette position (afficher un hello world par exemple):

public function hookDisplayCenterleftColumn($params) {
   
   return "hello world";
}



Cette feature si pratique a été développée par Fabien Serny, mais n'est malheureusement pas présente dans la documentation de Prestashop, ni dans les différents tutoriesl que j'ai pu lire sur le sujet. Donc un grand merci à lui pour l'avoir développé et me l'avoir fait découvrir ;)

 

Commentaires 17

Guest - Fabien Serny

(website) le mercredi 16 janvier 2013 12:45

Bonjour,

Si vous êtes en 1.5 (ce qui semble être le cas puisque vous parlez des hooks de display et des hooks d'action). Vous vous compliquez la tâche pour rien
Il vous suffit de faire ceci dans le thème {hook h='displayCenterleftColum'} et d'accrocher votre module sur ce hook. Plus besoin de faire d'insert en base de données ni d'assigner le hook dans frontController.

Je suis le développeur qui a développé ce système sur PrestaShop 1.5 donc n'hésitez pas si vous avez des questions.

Fabien

Bonjour, Si vous êtes en 1.5 (ce qui semble être le cas puisque vous parlez des hooks de display et des hooks d'action). Vous vous compliquez la tâche pour rien :) Il vous suffit de faire ceci dans le thème {hook h='displayCenterleftColum'} et d'accrocher votre module sur ce hook. Plus besoin de faire d'insert en base de données ni d'assigner le hook dans frontController. Je suis le développeur qui a développé ce système sur PrestaShop 1.5 donc n'hésitez pas si vous avez des questions. Fabien

cyril, directeur de Pulsar

(website) le mercredi 16 janvier 2013 13:48

Comme écrit dans l'article merci d'avoir développé cette feature si pratique! et de l'indiquer ici.
J'ai mis à jour l'article en fonction, c'est juste dommage que je n'aie pas réussi à trouver cette info dans la doc officielle de Prestashop...tu aurais des liens à conseiller sur le sujet? tu tiens un blog?

Comme écrit dans l'article merci d'avoir développé cette feature si pratique! et de l'indiquer ici. J'ai mis à jour l'article en fonction, c'est juste dommage que je n'aie pas réussi à trouver cette info dans la doc officielle de Prestashop...tu aurais des liens à conseiller sur le sujet? tu tiens un blog?

Guest - Angel

le mardi 23 avril 2013 15:58

Bonjour,
Je galère un peu avec les hooks dans Prestashop 1.5.4. Qu'entendez vous par "accrocher votre module sur ce hook ?". De mon côté, j'ai bien ajouté un registerHook('NomDuHook') dans ma methode install() de mon module et créé une function hookNomDuHook mais rien n'y fait. Côté thème, j'ajoute bien {hook h='displayNomDuHook'}. Mais y'a rien qui s'affiche... Pourriez vous m'apporter un peu de votre lumière SVP ?

Bonjour, Je galère un peu avec les hooks dans Prestashop 1.5.4. Qu'entendez vous par "accrocher votre module sur ce hook ?". De mon côté, j'ai bien ajouté un registerHook('NomDuHook') dans ma methode install() de mon module et créé une function hookNomDuHook mais rien n'y fait. Côté thème, j'ajoute bien {hook h='displayNomDuHook'}. Mais y'a rien qui s'affiche... Pourriez vous m'apporter un peu de votre lumière SVP ?

cyril, directeur de Pulsar

(website) le mercredi 24 avril 2013 07:09

Bonjour,

pour trouver ce qui cloche tu peux t'aider du tuto de l'ancienne version (http://www.pulsar-informatique.com/Actus-Blog/Entry/tutoriel-ajouter-un-hook-dans-prestashop-v1-4.html), comme la méthode ancienne était moins "all in one" tu vois mieux les étapes de l'ajout du hook.
Tu peux ainsi commencer par regarder dans ta table ps_hook pour voir si ton hook a bien été créé en base.

Bonjour, pour trouver ce qui cloche tu peux t'aider du tuto de l'ancienne version (http://www.pulsar-informatique.com/Actus-Blog/Entry/tutoriel-ajouter-un-hook-dans-prestashop-v1-4.html), comme la méthode ancienne était moins "all in one" tu vois mieux les étapes de l'ajout du hook. Tu peux ainsi commencer par regarder dans ta table ps_hook pour voir si ton hook a bien été créé en base.

Guest - Fabien Serny

(website) le mercredi 16 janvier 2013 15:42

En effet, je viens de voir que ce point ne semble pas préciser dans la doc
C'est d'autant plus dommage que ça fait parti des points d'amélioration important.

En fait, je ne travaille plus chez PrestaShop depuis Juillet du coups je n'ai pas trop suivi ce qui a été fait dans la documentation. Je suis tombé sur ton article par hasard en voyant passer un twitt.

Tu peux retrouver pas mal d'informations sur les améliorations en 1.5 ici :
http://doc.prestashop.com/display/PS15/New+Developers+Features+In+PrestaShop+1.5#NewDevelopersFeaturesInPrestaShop1.5-ModuleAPI

Je n'ai pas de blog pour le moment (manque de temps pour le moment), mais j'en ouvrirai peut être un prochainement (même si je ne suis pas sûr de parler beaucoup de PrestaShop dessus).

Si tu as des questions, n'hésite pas à ping sur mon twitter @FabienSerny

Ps: Ton lien "Tutoriel - Ajouter un hook dans Prestashop v1.4" tombe sur une 404

En effet, je viens de voir que ce point ne semble pas préciser dans la doc :( C'est d'autant plus dommage que ça fait parti des points d'amélioration important. En fait, je ne travaille plus chez PrestaShop depuis Juillet du coups je n'ai pas trop suivi ce qui a été fait dans la documentation. Je suis tombé sur ton article par hasard en voyant passer un twitt. Tu peux retrouver pas mal d'informations sur les améliorations en 1.5 ici : http://doc.prestashop.com/display/PS15/New+Developers+Features+In+PrestaShop+1.5#NewDevelopersFeaturesInPrestaShop1.5-ModuleAPI Je n'ai pas de blog pour le moment (manque de temps pour le moment), mais j'en ouvrirai peut être un prochainement (même si je ne suis pas sûr de parler beaucoup de PrestaShop dessus). Si tu as des questions, n'hésite pas à ping sur mon twitter @FabienSerny Ps: Ton lien "Tutoriel - Ajouter un hook dans Prestashop v1.4" tombe sur une 404

cyril, directeur de Pulsar

(website) le mercredi 16 janvier 2013 15:56

C'est d'autant plus dommage que ça fait parti des points d'amélioration important.
=> je partage cet avis!

Ton lien "Tutoriel - Ajouter un hook dans Prestashop v1.4" tombe sur une 404
=> corrigé, merci

merci pour ton lien, tes remarques et ton twitter, et si tu ouvres un blog, n'hésite pas à me pinger sur @rapha_86, je suis intéressée

bonne soirée

[quote]C'est d'autant plus dommage que ça fait parti des points d'amélioration important.[/quote] => je partage cet avis! [quote]Ton lien "Tutoriel - Ajouter un hook dans Prestashop v1.4" tombe sur une 404[/quote] => corrigé, merci merci pour ton lien, tes remarques et ton twitter, et si tu ouvres un blog, n'hésite pas à me pinger sur @rapha_86, je suis intéressée ;) bonne soirée

Guest - glaco

le samedi 11 mai 2013 11:07

Bonjour,
je cherche à rendre disponible le module homeslider sur un hook perso. J'ai créé le hook, defini le registerHook, créé une fonction hookMonHookPerso qui appelle la fonction hookDisplayHome (voir ci dessous). Cela fonction mais l'écriture des classes dans les DIV et le UL et les LI nécessaires au plug-in jquery (bx-wrapper, etc. ) ne sont créées que si j'installe le slider dans le hook displayHome également. Sinon, les images du slider ne sont pas formatées et reste une en dessous de l'autre dans un simple li sans style. Avez-vous une idée de la fonction à appeler pour déclarer correctement le slider dans un hook personnalisé ?
merci de votre réponse.

public function hookDisplayPos1(){
return $this->hookDisplayHome(); // cette fonction ne déclenche pas l'écriture des classes personnalisées dans les li ?
}

Bonjour, je cherche à rendre disponible le module homeslider sur un hook perso. J'ai créé le hook, defini le registerHook, créé une fonction hookMonHookPerso qui appelle la fonction hookDisplayHome (voir ci dessous). Cela fonction mais l'écriture des classes dans les DIV et le UL et les LI nécessaires au plug-in jquery (bx-wrapper, etc. ) ne sont créées que si j'installe le slider dans le hook displayHome également. Sinon, les images du slider ne sont pas formatées et reste une en dessous de l'autre dans un simple li sans style. Avez-vous une idée de la fonction à appeler pour déclarer correctement le slider dans un hook personnalisé ? merci de votre réponse. public function hookDisplayPos1(){ return $this->hookDisplayHome(); // cette fonction ne déclenche pas l'écriture des classes personnalisées dans les li ? }

cyril, directeur de Pulsar

(website) le mercredi 15 mai 2013 06:26

Bonjour,

je ne comprends pas pourquoi appeler un hook personnalisé? pourquoi ne pas utiliser directement les hooks de Prestashop?

Bonjour, je ne comprends pas pourquoi appeler un hook personnalisé? pourquoi ne pas utiliser directement les hooks de Prestashop?

Guest - Jeromethewebdev

le mercredi 19 février 2014 16:35

Bonjour,

j'ai le même problème, en fait il semble que les fichiers javacript et css ne soient pas chargés.
J'ai pourtant bien suivi le process, et tout fonctionne sauf que pas de fichiers ...
Par ailleurs, le hook ne s'affiche pas dans la page "positions" des modules. Il faut greffer le module en cliquant sur "greffer un module" et le sélectionner dans la liste.

Quelqu'un aurait-il une solution ?

Je suis sous ps1.5.6.2

Bonjour, j'ai le même problème, en fait il semble que les fichiers javacript et css ne soient pas chargés. J'ai pourtant bien suivi le process, et tout fonctionne sauf que pas de fichiers ... Par ailleurs, le hook ne s'affiche pas dans la page "positions" des modules. Il faut greffer le module en cliquant sur "greffer un module" et le sélectionner dans la liste. Quelqu'un aurait-il une solution ? Je suis sous ps1.5.6.2

cyril, directeur de Pulsar

(website) le jeudi 20 février 2014 07:32

Bonjour

l'ajout de fichiers css et js se fait via le hookHeader, est-il bien mis dans ton module?

Par ailleurs, le hook ne s'affiche pas dans la page "positions" des modules. Il faut greffer le module en cliquant sur "greffer un module" et le sélectionner dans la liste.
c'est plutôt mauvais signe.
Je te conseille dans ce cas d'aller voir cet article : http://www.pulsar-informatique.com/Actus-Blog/Entry/tutoriel-ajouter-un-hook-dans-prestashop-v1-4.html
le paragraphe 1 te dit quelles tables aller voir pour vérifier si ton hook s'y trouve bien. à priori non.
Les tables sont les mêmes pour Prestashop v1.5.6.2.

Bonjour l'ajout de fichiers css et js se fait via le hookHeader, est-il bien mis dans ton module? [quote]Par ailleurs, le hook ne s'affiche pas dans la page "positions" des modules. Il faut greffer le module en cliquant sur "greffer un module" et le sélectionner dans la liste.[/quote]c'est plutôt mauvais signe. Je te conseille dans ce cas d'aller voir cet article : http://www.pulsar-informatique.com/Actus-Blog/Entry/tutoriel-ajouter-un-hook-dans-prestashop-v1-4.html le paragraphe 1 te dit quelles tables aller voir pour vérifier si ton hook s'y trouve bien. à priori non. Les tables sont les mêmes pour Prestashop v1.5.6.2.

Guest - Rouss63

(website) le jeudi 20 juin 2013 09:24

Bonjour,
je vous remercie pour cette documentation. Après mes tests, tout fonctionne très bien !

Je me pose une question:
Est-il possible de faire la modification du module à l'aide d'un override ? Si oui, dans quel répertoire ?

En vous remerciant par avance pour votre réponse.

Bonjour, je vous remercie pour cette documentation. Après mes tests, tout fonctionne très bien ! Je me pose une question: Est-il possible de faire la modification du module à l'aide d'un override ? Si oui, dans quel répertoire ? En vous remerciant par avance pour votre réponse.

Guest - Shimrra

(website) le mardi 30 juillet 2013 08:22

Merci beaucoup pour cet article, je cherchais justement un moyen "propre" pour ne pas devoir aller faire d'insert moi même dans la table ! =)

Merci beaucoup pour cet article, je cherchais justement un moyen "propre" pour ne pas devoir aller faire d'insert moi même dans la table ! =)

au plaisir

au plaisir :)

Guest - Rina

(website) le mardi 18 février 2014 07:53

Merci beaucoup pour ce tutoriel, cela m'a beaucoup aider.

Merci beaucoup pour ce tutoriel, cela m'a beaucoup aider.

cyril, directeur de Pulsar

(website) le mardi 18 février 2014 13:55

j'en suis ravie, c'est fait pour!

j'en suis ravie, c'est fait pour! ;)

Guest - souhael

(website) le mercredi 19 février 2014 14:16

Bonjour

Je ne sais pas si il y a toujours quelqu'un sur ce sujet ... mais j'ai un soucis.

Je souhaite pouvoir créer un Hook qui prends la largeur totale du site (au lieux d'une colonne) et le placer sur la Home Page entre le Header et les Colonne de ma Home.

Comment faire cela ?

MErci.

Bonjour Je ne sais pas si il y a toujours quelqu'un sur ce sujet ... mais j'ai un soucis. Je souhaite pouvoir créer un Hook qui prends la largeur totale du site (au lieux d'une colonne) et le placer sur la Home Page entre le Header et les Colonne de ma Home. Comment faire cela ? MErci.

cyril, directeur de Pulsar

(website) le jeudi 20 février 2014 07:39

Bonjour,

effectivement c'est possible, c'est plus facile de créer ta position via le module comme expliqué dans cet article mais si tu n'as pas de module à créer et que tu veux juste créer cette position dans ton template, je te conseille de suivre cet article: http://www.pulsar-informatique.com/Actus-Blog/Entry/tutoriel-ajouter-un-hook-dans-prestashop-v1-4.html
(sauf le paragraphe 4)
ne te restera ensuite qu'à bien mettre ton css

Raphaelle

Bonjour, effectivement c'est possible, c'est plus facile de créer ta position via le module comme expliqué dans cet article mais si tu n'as pas de module à créer et que tu veux juste créer cette position dans ton template, je te conseille de suivre cet article: http://www.pulsar-informatique.com/Actus-Blog/Entry/tutoriel-ajouter-un-hook-dans-prestashop-v1-4.html (sauf le paragraphe 4) ne te restera ensuite qu'à bien mettre ton css ;) Raphaelle
Pas encore de commentaire
avatar du commentateur
Guest
lundi 27 septembre 2021

Image Captcha

captcha

By accepting you will be accessing a service provided by a third-party external to https://www.pulsar-agency.com/