刚开始接触国内免费的网店系统: prestashop.  很多东西搞不明白. 从最基础的东西开始学起. hook就是最基本的. 现在终于明白了.

    网有朋友写了制作 hook的方法:

1. 找到你的Prestashop数据库的hook表,一般前缀是ps_的话,那这个表就是ps_hook。

2. 在hook表最后添加一条记录,当然ID要比当前最大值大,默认加1好了,钩子名称随便你命名。比如我命名为"cat"。

3. 找到你想添加这个挂钩的页面,比如footer.php。

4. 添加 ‘HOOK_CAT’ => Module::hookExec(‘cat’)到页面代码里。


  1. $smarty->assign(array(  
  2.         'HOOK_RIGHT_COLUMN' => Module::hookExec('rightColumn'),  
  3.         'HOOK_FOOTER' => Module::hookExec('footer'),  
  4.         'content_only' => intval(Tools::getValue('content_only'))));  
  5.         $smarty->display(_PS_THEME_DIR_.'footer.tpl');  
$smarty->assign(array( 'HOOK_RIGHT_COLUMN' => Module::hookExec('rightColumn'), 'HOOK_FOOTER' => Module::hookExec('footer'), 'content_only' => intval(Tools::getValue('content_only')))); $smarty->display(_PS_THEME_DIR_.'footer.tpl');
5. 这是添加后的代码。

  1. $smarty->assign(array(  
  2.         'HOOK_RIGHT_COLUMN' => Module::hookExec('rightColumn'),  
  3.         'HOOK_FOOTER' => Module::hookExec('footer'),  
  4.         'HOOK_CAT' => Module::hookExec('cat'),  
  5.         'content_only' => intval(Tools::getValue('content_only'))));  
  6.         $smarty->display(_PS_THEME_DIR_.'footer.tpl');  
$smarty->assign(array( 'HOOK_RIGHT_COLUMN' => Module::hookExec('rightColumn'), 'HOOK_FOOTER' => Module::hookExec('footer'), 'HOOK_CAT' => Module::hookExec('cat'), 'content_only' => intval(Tools::getValue('content_only')))); $smarty->display(_PS_THEME_DIR_.'footer.tpl');

6. 在footer.tpl任意你想插入挂钩的位置添加{$HOOK_CAT}。

注意事项: 一定要在php页面的smarty模板变量数组里给挂钩赋值,这样才能在tpl文件里使用。

 

但如果你对hook不理解也没有什么用.

可以这样理解:

hook本身并且不定义具体的内容, 只是一个占位置的东西, 模块中再定义说自己要放到那个hook中.

 

但还有一个问题, 如果几个模块都说明自己要显示到同一个hook中, 谁先谁后怎么确定啊.
如: Tags Categories 都要显示到 {$HOOK_LEFT_COLUMN} 为什么 Tags就在前面, Categories就会显示在第二个.
这个顺序是怎么确定的?

后台module配置页面上面有个position,可以在里面移动位置,设定挂载先后顺序。