Managing Hooks
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:
Hook name | Description |
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. |
displayFooter | 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.
Using hooks
...in a controller
It is easy to call a hook from within a controller: you simply have to use its name with the hookExec()
method: Module::hookExec('NameOfHook');
For instance:
...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.
For instance:
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.
Last updated