官术网_书友最值得收藏!

Triggering hooks

In the PrestaShop source code, you will find two types of hook triggers:

  • In .php file, it will be the Hook::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 )
主站蜘蛛池模板: 双牌县| 锡林郭勒盟| 聂拉木县| 深泽县| 阜平县| 汕尾市| 南和县| 昌宁县| 天长市| 石河子市| 麟游县| 睢宁县| 屏山县| 商洛市| 黑河市| 枣阳市| 子长县| 上林县| 黄大仙区| 霞浦县| 荣昌县| 舒兰市| 扎鲁特旗| 黄山市| 武川县| 黎平县| 革吉县| 仁寿县| 徐闻县| 五指山市| 商南县| 德兴市| 广德县| 拉孜县| 阳江市| 车险| 天峻县| 武汉市| 阜新| 武川县| 霍林郭勒市|