我正在尝试为 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); }
Tools::redirect($url);
如果重定向,则在 Prestashop中使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句