Opencart自定义模块未在前端显示

时间:2014-01-26 05:25:02

标签: php module opencart frontend

我刚刚使用hostjars启动文件开发了我的第一个Opencart(1.5.6)插件。

管理部分工作得很漂亮,所有前端代码都已放置。但是,由于某种原因,即使已在管理员中定义了该位置,该模块也未显示在网页上。

下面是前端控制器代码供参考(仅供参考,不会引发错误,这让我觉得可能没有调用Controller或其他东西):

<?php class ControllerModulebevyspecials extends Controller {
protected function index($setting) {
    //Load the language file  
    $this->language->load('module/bevy_specials');

    //Load the models  
    $this->load->model('module/bevy_specials'); 

    //Get the title from the language file
    $this->data['heading_title'] = $this->language->get('heading_title');

    //Retrieve Checkout Special Products
    $products = $this->model_module_bevy_specials->getBevySpecials();
    if(Count($products)>0){         
        foreach ($products as $product) {
            $product_info = $this->model_catalog_product->getProduct($product['product_id']);
            $this->data['title'] = $product['title'];
            if (isset($product_info)) {
                $this->data['products'][] = array(
                    'product_id'    => $product_info['product_id'],
                    'name'          => $product_info['name'],
                    'discount'      => $product['discount']
                );
            }
        }   
    }
    else{
        $this->data['noRecord'] = true;
    }

    //Choose which template to display this module with
    if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/bevy_specials.tpl')) {
        $this->template = $this->config->get('config_template') . '/template/module/bevy_specials.tpl';
    } else {
        $this->template = 'default/template/module/bevy_specials.tpl';
    }

    //Render the page with the chosen template
    $this->render();
}  } ?>

我是否遗漏了在网页上显示模块的任何特定代码?

Opencart文档在模块开发方面是非常小的,我尝试在网上搜索解决方案,但找不到明确的答案。

任何输入都将不胜感激。提前谢谢!

更多信息: 虽然在管理面板中发现了一个问题,但是当我为模块添加2个或更多布局时(例如,添加到联系页面的“列左”和帐户页面的“内容顶部”),前端然后显示以下错误:

Warning: Invalid argument supplied for foreach() in D:\xampp171\htdocs\opencart\catalog\controller\common\column_left.php on line 49

1 个答案:

答案 0 :(得分:0)

已解决问题 由于我使用了hostjars启动文件,我不得不修改代码abit并解决问题。

1)在模块的管理控制器中,我删除了注释下的部分:

"//This code handles the situation where you have multiple instances of this module, for different layouts."

2)在Admin View .tpl文件中,对于布局位置,我必须正确格式化几个html标签。例如:<select name="my_module_<?php echo $module_row; ?>_layout_id">已替换为正确格式<select name="banner_module[<?php echo $module_row; ?>][layout_id]"> ......这可确保在管理控制台中可以保存多个布局。 (.tpl文件中将有8个位置需要这样做)

3)最后但并非最不重要的是,如果你正确地执行了第2步,那么布局将被正确序列化并保存在数据库的oc_settings表中(以前我的布局没有以序列化形式存储)。 / p>

希望上面也能帮助别人。

谢谢!