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

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 )
主站蜘蛛池模板: 都匀市| 青州市| 博野县| 随州市| 绩溪县| 三明市| 珲春市| 高雄市| 西安市| 通海县| 莲花县| 张家港市| 乌拉特前旗| 台湾省| 宜阳县| 满洲里市| 山丹县| 雅安市| 阿巴嘎旗| 安乡县| 维西| 保靖县| 肥东县| 旬阳县| 上栗县| 平舆县| 盈江县| 于田县| 霍州市| 于都县| 樟树市| 木兰县| 龙南县| 偃师市| 永兴县| 师宗县| 额敏县| 哈尔滨市| 醴陵市| 南康市| 乌审旗|