如何使用具有不同子模板的模块

时间:2014-10-22 18:12:00

标签: php opencart

我想用两个不同的视图在两个不同的地方显示现有模块。 当然我可以创建另一个模块,但这看起来并不正确,因为逻辑是相同的。 另一方面,我希望能够重用两个视图,但看起来我只能重用模块和硬连线模板,对吗?或者我该怎么做?

1 个答案:

答案 0 :(得分:1)

在模块控制器的顶部,您将会遇到以下情况:

<?php  
class ControllerModuleMyModule extends Controller {
    protected function index($setting) {

如果只是说index(),则将其更改为index($setting)

$setting['position']将包含当前实例的位置名称,例如&#34; content_bottom&#34 ;.所以你可以根据这个改变模板。

一个基本的例子:

switch($setting['position']) {
    case 'content_top':
        $template_name = 'my_module_top.tpl';
        break;
    case 'column_left':
        $template_name = 'my_module_left.tpl';
        break;
    default:
        $template_name = 'my_module.tpl';
        break;
}

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/' . $template_name)) {
    $this->template = $this->config->get('config_template') . '/template/module' . $template_name;
} else {
    $this->template = 'default/template/module/' . $template_name;
}