- PrestaShop Module Development
- Fabien Serny
- 235字
- 2021-08-05 17:12:28
Triggering hooks
In the PrestaShop source code, you will find two types of hook triggers:
- In
.php
file, it will be theHook::exec('hookName')
method - In
.tpl
file, it will be the{hook h='hookName'}
Smarty function
In our case, in /classes/controllers/ProductController.php
, you will find the following code:
Hook::exec('displayProductTabContent');
This function will execute all the functions named hookDisplayProductTabContent
of the modules attached to this hook in the order defined by the positions we talked about earlier.
The return value of each function will be concatenated and returned by the Hook::exec
function. The displayProductTabContent
hook is generally used to display blocks at the bottom of the product page. If we look closer at the line containing the trigger (I simplified the following lines on purpose to focus on the essentials), we will see this:
$this->context->smarty->assign(array('HOOK_PRODUCT_TAB' => Hook::exec('displayProductTab', array('product' => $this->product)),'HOOK_PRODUCT_TAB_CONTENT' => Hook::exec ('displayProductTabContent',array('product' => $this->product)),));
So, in this case, each module will return HTML code and the result will be directly assigned to the Smarty templates.
Note
When a hook is called, some parameters can be passed on, for example:
Hook::exec('displayExample', array('val1' => 23, 'val2' => 'Hello'));
These are automatically passed as an array parameter to the function called by the hook. In this example, if a module that is attached to this hook has the following method:
public function hookDisplayExample($params) { print_r($params); }
Then, this function will display:
Array ( [val1] => 23 [val2] => hello )