Prestashop beforeRequest 中间件
Prestashop beforeRequest Middleware
我正在尝试为 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 提供这样的挂钩吗?如果没有,我可以创建一个吗?我应该在哪里编写触发它的代码?
执行的拳头钩子是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);
用于重定向。
我正在尝试为 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 提供这样的挂钩吗?如果没有,我可以创建一个吗?我应该在哪里编写触发它的代码?
执行的拳头钩子是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);
用于重定向。