Opencart Event系统OC 3.0.2.0,是否覆盖核心控制器和树枝文件?

时间:2018-08-07 10:51:04

标签: opencart opencart-3 opencart-events

是否可以仅将OC Event系统用于这些替代?

我需要重写产品控制器的核心索引功能。我要编辑核心文件并添加以下行:

$data['quantity'] = $product_info['quantity']; 

到“ 类ControllerProductProduct扩展控制器”中的功能索引()

然后我需要在 product.twig 文件中添加以下行:

<span>{{ quantity }}</span>

我只想使用OC Event系统,而不要使用ocmod或vqmod。

是真的吗?

感谢帮助。

1 个答案:

答案 0 :(得分:0)

首先,您需要将事件添加到数据库中,可以在模块addEvent函数内使用install函数,如下所示:

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);

现在创建此文件:

catalog\controller\extension\module\my_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

     

品牌苹果

     

数量:929

     

产品代码:产品16

     

奖励积分:600

     

可用性:有库存