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

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 )
主站蜘蛛池模板: 阿荣旗| 平乐县| 珠海市| 郸城县| 三河市| 云浮市| 隆德县| 广南县| 东至县| 云南省| 平凉市| 洪洞县| 吉水县| 巢湖市| 福泉市| 清远市| 贡嘎县| 贡嘎县| 深圳市| 九江市| 于都县| 武平县| 高尔夫| 北海市| 滦南县| 昭通市| 大悟县| 凤阳县| 泸西县| 政和县| 涞源县| 大渡口区| 祁阳县| 淳安县| 鲁甸县| 衢州市| 威远县| 兴宁市| 东宁县| 澄迈县| 晋城|