Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

opencart php custom page without using the "information" feature

Tags:

php

opencart

I want to create a custom page in opencart.

I know I can put a custom page in the information section using the admin area however what I would like is a controller which points to a few other pages.

I dont fully understand how to do this.

In codeigniter you would create a controller and a view and if needed setup some rules in the routes file but I cannot see anything like this.

Would somebody mind explaining or pointing me to some instructions on how to do this please.

Thank you

like image 225
jaget Avatar asked Feb 28 '12 22:02

jaget


1 Answers

It's pretty simple to do to be honest. You need to create a controller for your file, naming based on the folder and filename. For instance common/home.php has

Class ControllerCommonHome extends Controller

This is accessed using index.php?route=common/home and accesses the index() method. If you want to call another method, for instance foo, you would need to define the method as

public function foo() {
    // Code here
}

and would call it using index.php?route=common/home/foo

As for rendering the view, that's a bit trickier. Basically you need to add all of this to the end of your controller method

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

Which will render /catalog/view/theme/your-theme-name/template/common/new_template_file.tpl If that file doesn't exist, it will attempt to use the same path in the default theme folder

I'd recommend you take a look at a few controllers and templates to get your head around where everything comes from properly, but that's the basic gist of how it works

like image 174
Jay Gilford Avatar answered Nov 06 '22 00:11

Jay Gilford