是否可以仅使用OC事件系统进行这些覆盖?
我需要覆盖产品控制器的核心索引功能。我想编辑核心文件并添加以下行:
$data['quantity'] = $product_info['quantity'];
到">类ControllerProductProduct扩展控制器"中的函数index((
然后我需要在产品.titch文件中添加这一行:
<span>{{ quantity }}</span>
我只想使用OC事件系统,而不是ocmod或vqmod。
这是真的吗?
谢谢你的帮助。
首先需要将事件添加到数据库中,可以在模块install
函数中使用addEvent
函数,如下所示:
public function install(){
$this->load->model('setting/event');
$this->model_setting_event->addEvent('my_module', 'catalog/view/product/product/after', 'extension/module/my_module/edit_product_page');
}
或者手动添加:
INSERT INTO `oc_event` (`code`, `trigger`, `action`, `status`) VALUES ('my_module', 'catalog/view/product/product/after', 'extension/module/my_module/edit_product_page', 1);
现在创建这个文件:
catalogcontrollerextensionmodulemy_module.php
及其内容:
<?php
class ControllerExtensionModuleMyModule extends Controller {
public function edit_product_page(&$route = '', &$data = array(), &$output = '') {
if (isset ($this->request->get['product_id'])) {
$product_info = $this->model_catalog_product->getProduct($this->request->get['product_id']);
if ($product_info) {
// Display it before <li>Product Code:
$find = '<li>' . $data['text_model'];
$replace = '<li>Quantity: ' . $product_info['quantity'] . '</li>' . $find;
$output = str_replace($find, $replace, $output);
}
}
}
}
结果:
MacBook
品牌Apple
数量:929
产品代码:产品16
奖励积分:600
可用性:库存