不使用“信息”功能创建OpenCart PHP自定义页面

11

我想在Opencart中创建一个自定义页面。

我知道可以使用管理区域在信息部分中放置自定义页面,但是我想要的是一个控制器,它指向其他几个页面。

我不完全了解如何做这件事。

在CodeIgniter中,您会创建一个控制器和一个视图,并在需要时在路由文件中设置一些规则,但我找不到类似的东西。

请问有人可以解释一下或指导我如何做吗?

谢谢

2个回答

17

实际上这很简单。您需要为文件创建一个控制器,命名基于文件夹和文件名。例如,common/home.php的控制器应该是

Class ControllerCommonHome extends Controller

通过使用index.php?route=common/home进行访问,并访问index()方法。如果你想要调用另一个方法,比如说foo,你需要将该方法定义为

public function foo() {
    // Code here
}

并且可以使用 index.php?route=common/home/foo 进行调用。

至于渲染视图,这有点棘手。基本上,你需要将所有这些内容添加到控制器方法的末尾。

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

    $this->children = array(
        'common/column_left',
        'common/column_right',
        'common/content_top',
        'common/content_bottom',
        'common/footer',
        'common/header'
    );

    $this->response->setOutput($this->render());

如果该文件不存在,它将尝试在default主题文件夹中使用相同路径。

我建议您查看一些控制器和模板,以便正确理解所有内容的来源,但这就是它的基本要点。


这里可能有一些缺失,但不确定是什么。标准文件确实具有此结构,但也许需要注册新扩展或其他内容的地方? - James P.
1
如果您正在创建全新的页面,则无需进行注册。如果它们是模块,则基本原则相同,但需要在管理中安装这些模块,并设置其位置等参数以启用它们。 - Jay Gilford

0
请关注此页面,我希望它更有用。

http://code.tutsplus.com/tutorials/create-a-custom-page-in-opencart--cms-22054

OpenCart是使用流行的编程MVC模式构建的。还有一个名为“L”的元素添加到此模式中-语言部分-因此在OpenCart中称为MVC-L模式。我不会详细介绍MVC模式,因为它是一种非常流行和熟悉的设计模式,并且我们已经在其他教程中详细介绍了它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接