我刚刚使用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
答案 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>
希望上面也能帮助别人。
谢谢!