Hooks are a way to associate your code to some specific PrestaShop events.
Most of the time, they are used to insert content in a page.
For instance, the PrestaShop default theme's home page has the following hooks:
|displayHeader||Displays the content in the page's header area.|
|displayTop||Displays the content in the page's top area.|
|displayLeftColumn||Displays the content in the page's left column.|
|displayHome||Displays the content in the page's central area.|
|displayRightColumn||Displays the content in the page's right column.|
Displays the content in the page's footer area.
Hooks can also be used to perform specific actions under certain circumstances (i.e. sending an e-mail to the client).
You can get a full list of the hooks available in PrestaShop 1.6 in the "Hooks in PrestaShop 1.6" chapter of the Developer Guide.
...in a controller
It is easy to call a hook from within a controller: you simply have to use its name with the
...in a module
In order to attach your code to a hook, you must create a non-static public method, starting with the "
hook" keyword followed by either "
display" or "
action", and the name of the hook you want to use.
This method receives one (and only one) argument: an array of the contextual information sent to the hook.
In order for a module to respond to a hook call, the hook must be registered within PrestaShop. Hook registration is done using the
registerHook() method. Registration is usually done during the module's installation.
...in a theme
It is easy to call a hook from within a template file (
.tpl): you simply have to use its name with the
hook function. You can add the name of a module that you want the hook execute.
Creating your own hook
You can create new PrestaShop hooks by adding a new record in the
ps_hook table in your MySQL database. You could do it the hard way:
...but PrestaShop enables you to do it the easy way:
If the hook "NameOfHook" doesn't exist, PrestaShop will create it for you. No need to do the SQL query anymore.