理解免费网店系统prestashop中的hook概念

By | 2010/08/20

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

如何理解免费网店系统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’);


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’);

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

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

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

可以这样理解:

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

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

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

整个prestashop系统都模块化了.  要修改很方便.


One thought on “理解免费网店系统prestashop中的hook概念

Comments are closed.