刚开始接触国内免费的网店系统: 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’)到页面代码里。
- $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. 这是添加后的代码。
- $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,可以在里面移动位置,设定挂载先后顺序。
整个prestashop系统都模块化了. 要修改很方便.
持续关注