Prestashop 请求前中间件
我正在尝试为Prestashop 1.6构建一个模块,如果目标URL存在于数据库中,该模块将重定向用户 我要做的是:Prestashop 请求前中间件,prestashop,prestashop-1.6,Prestashop,Prestashop 1.6,我正在尝试为Prestashop 1.6构建一个模块,如果目标URL存在于数据库中,该模块将重定向用户 我要做的是: public function checkRedirection ($url) { $line = Db::getInstance()->executeS('SELECT * FROM ps_custom_redirection WHERE url = ' . pSQL($url)); if (!sizeof($line)) { retur
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
hook时运行此函数。但我宁愿在请求过程的开始启动此功能
Prestashop是否提供了这样一个挂钩?如果没有,我可以创建一个吗?我应该在哪里编写代码来启动它?执行的第一个钩子是
actionDispatcher
——如果需要,您可以使用它
您将在/classes/Dispatcher.php
中找到这个钩子。搜索代码Hook::exec('actionDispatcher',$params\u Hook\u action\u dispatcher)代码>
如果要将此挂钩添加到模块中,则需要在主模块文件中使用其名称,如下所示:
public函数安装(){
返回父::安装()
&&$this->registerHook('actionDispatcher');
}
公共函数hookActionDispatcher($params){
//你的代码
工具::重定向($url);
}
在PrestashopTools::redirect($url)中代码>用于重定向。感谢您的回复。在我的ps\u hook
表中找不到actionDispatcher
是否正常?是的。如果您没有向这个钩子添加任何内容,那么数据库表ps_hook
@Hammerbot不会依赖数据库条目来查找钩子,而是在prestashop文件中搜索hook::exec
和{hook h=
,以查找所有可用的钩子。