我正在尝试为Prestashop 1.6构建一个模块,如果目标URL存在于数据库中,该模块将重定向用户。
我将要做的是:
public function checkRedirection ($url) {
$line = Db::getInstance()->executeS('SELECT * FROM ps_custom_redirection WHERE url = ' . pSQL($url));
if (!sizeof($line)) {
return null;
}
header('Location: ' . $line[0]['destination']);
http_response_code($line[0]['http_code']);
exit();
}
现在,我可以在触发displayTop
挂钩时运行此函数。但我宁愿在请求的过程开始时启动此功能。
Prestashop会提供这样的钩子吗?如果没有,我可以创建吗?我应该在哪里编写代码来解雇它?
答案 0 :(得分:1)
执行的第一个钩子是actionDispatcher
- 你可以根据需要使用它。
你会发现这个钩子在/classes/Dispatcher.php
中执行。搜索代码Hook::exec('actionDispatcher', $params_hook_action_dispatcher);
。
如果要将此挂钩添加到模块中,则需要在主模块文件中使用其名称,如下所示:
public function install() {
return parent::install()
&& $this->registerHook('actionDispatcher');
}
public function hookActionDispatcher($params) {
// your code
Tools::redirect($url);
}
如果重定向,则使用Prestashop Tools::redirect($url);
。