我正在尝试弄清楚如何覆盖控制器以在 OpenCart 4 中构建自定义主题。显然,文档很丰富,我已经浏览了所有内容,现在我对选择 OpenCart 4 的决定感到非常自豪,迄今为止最好的开源电子商务平台。所以我显然不能反悔这个决定。
除此之外,我尝试使用原始源中提供的 opencart 示例主题插件中的示例来覆盖公共/标头控制器。我之前尝试为该特定控制器设置一个事件,该事件触发良好。在标头覆盖函数中,我尝试更改路线,以便系统将使用我的自定义控制器,但每次运行它时,它都会继续并使用常规的原始控制器。
任何人都可以阐明问题所在吗?在我看来,它应该基于 OpenCart 开发人员为这个新版本提供的非常详细的文档来工作。
现在我正在安装时注册事件:
$event_data = [
'code' => 'oc_pif_theme_example',
'description' => 'Pif Example theme extension controller override',
'trigger' => 'catalog/controller/common/header/before',
'action' => 'extension/oc_pif_theme_example/startup/theme_example.header_override',
'status' => 1,
'sort_order' => 0
];
$this->load->model('setting/event');
$this->model_setting_event->addEvent($event_data);
这是我的 header_override 方法:
public function header_override(string &$route, array &$args): void {
$override = ['common/header'];
if (in_array($route, $override)) {
// Override the route to point to your new controller
$route = 'extension/oc_pif_theme_example/' . $route;
$this->log->write('header_override() final route: ' . $route);
}
}
在扩展/oc_pif_theme_example/catalog/controller/common/header.php 中找到的自定义控制器中,我有带有一些日志记录的索引方法,以检查它是否实际运行并加载树枝文件。
任何可以为我指明正确方向的事情都会受到赞赏。感谢您的意见。
我也有同样的问题。我将覆盖自定义主题中的默认产品控制器,但我找不到解决方案。