Search code examples
phpe-commerceopencart

How to create a custom admin page in opencart?


I want to know how to make a custom admin panel page in opencart.

Requires login with the controller - the admin panel does not seem to use the same controller as the normal site. I know how to make custom pages with opencart (but this is not for the admin)

A simple Hello World example would be great


Solution

  • OpenCart 2.x

    The path names have changed in OpenCart 2 - you will want to create

    admin/controller/extension/module/hello.php admin/language/en-gb/extension/module/hello.php admin/view/template/extension/module/hello.tpl Then the route becomes

    admin/index.php?route=extension/module/hello

    OpenCart 1.x

    • Include full MVC flow.

    I found out how to do this. OpenCart uses the MVC pattern. I recommend reading about How to be an OpenCart Guru? post about learning how the system works - this Admin workflow should also suffice for customer end.

    1) Create a new file in admin/controller/custom/helloworld.php

    Your filename and controller name should be the same in desc order:

    helloworld.php

    <?
    
    class ControllerCustomHelloWorld extends Controller{ 
        public function index(){
                    // VARS
                    $template="custom/hello.tpl"; // .tpl location and file
            $this->load->model('custom/hello');
            $this->template = ''.$template.'';
            $this->children = array(
                'common/header',
                'common/footer'
            );      
            $this->response->setOutput($this->render());
        }
    }
    ?>
    

    2) Create a new file in admin/view/template/custom/hello.tpl

    Hello.tpl

    <?php echo $header; ?>
    <div id="content">
    <h1>HelloWorld</h1>
    <?php
    echo 'I can also run PHP too!'; 
    ?>
    </div> 
    <?php echo $footer; ?>
    

    3) Create a new file in admin/model/custom/hello.php

    <?php
    class ModelCustomHello extends Model {
        public function HellWorld() {
            $sql = "SELECT x FROM `" . DB_PREFIX . "y`)"; 
            $implode = array();
            $query = $this->db->query($sql);
            return $query->row['total'];    
        }       
    }
    ?>
    

    4) You then need to enable the plugin to avoid permission denied errors:

    Opencart > Admin > Users > User Groups > Admin > Edit
    

    Select and Enable the Access Permission.

    To visit your page go to

    www.yoursite.com/opencart/admin/index.php?route=custom/helloworld