Changes in opencart version

Opencart has been released. It has a lots of changes. Here, we have mention all the changes.

Changes in files and Structure

  1. Opencart is compatible with composer. Here two version of opencart are available (complied or non-compiled).
  2. There are too much changes in index.php. It has only 22 line of code.
    // Version
    define('VERSION', '');
    // Configuration
    if (is_file('config.php')) {
    // Install
    if (!defined('DIR_APPLICATION')) {
        header('Location: install/index.php');
    // Startup
    require_once(DIR_SYSTEM . 'startup.php');
    $application_config = 'catalog';
    // Application
    require_once(DIR_SYSTEM . 'framework.php');
  3.  startup new folder added catalog/controller/startup with following files.
    1. startup.php
    2. session.php
    3. seo_url.php
    4. router.php
    5. maintenance.php
    6. event.php
    7. error.php
  4. event folder added catalog/controller/event with following files.
    1. thmem.php
    2. debug.php
  5.  New class is added system/engine/proxy.php
  6. Cart folder is added under system/library/cart with following files.
    1. weight.php
    2. user.php
    3. tax.php4. length.php
    5. customer.php
    6. currency.php
    7. cart.php
    8. affiliate.php
  7. session folder added system/library/session with following files.
  8.  Localisation is now language/en-gb instead of language/english.


Changes in Admin area :

  1.  Theme route has been change now admin/index.php?route=theme/theme_default
  2.  Add new payment methods
    1. Lay-Buy
    2. Cardinity
    3. Eway
  3.  New modules added :
    1. Lay-Buy
    2. sagepay

Changes in code :

  1. Link creation has been changed

    $data['href'] => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], 'SSL');


    $data['href'] => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], true);

    ssl is included in the constructor of the library : system/library/url.php

    public function __construct($ssl = false) {
  2. Template loading has been changed

    before :

    $this->response->setOutput($this->load->view('catalog/product_form.tpl', $data));

    now :

    $this->response->setOutput($this->load->view('analytics/google_analytics', $data));

    we do not need to write extension name of template file, it is automatically add. Template render adopter file has been changed now

    before :

    now :

    public function render($template) {
    return $this->adaptor->render($template);
  3. Changes in language loading : now you can load the language using $this->load->language('catalog/attribute_group'); instead of $this->language->load('catalog/attribute_group');
  4. Changes in event : Add event

    if (version_compare(VERSION, '2.0.1', '>=')) {
      $this->model_extension_event->addEvent('openbay', 'post.admin.product.delete', 'extension/openbay/eventDeleteProduct');
      $this->model_extension_event->addEvent('openbay', 'post.admin.product.edit', 'extension/openbay/eventEditProduct');
    } else {
      $this->model_tool_event->addEvent('openbay', 'post.product.delete', 'extension/openbay/eventDeleteProduct');
      $this->model_tool_event->addEvent('openbay', 'post.product.edit', 'extension/openbay/eventEditProduct');

    and now :

    $this->model_extension_event->addEvent('openbay', 'admin/model/catalog/product/deleteProduct/before', 'extension/openbay/eventDeleteProduct');
    $this->model_extension_event->addEvent('openbay', 'admin/model/catalog/product/editProduct/before', 'extension/openbay/eventEditProduct');
  5. Changes in event : Delete event

    if (version_compare(VERSION, '2.0.1', '>=')) {
    } else {

    and now :

  6. Changes in trigger: Adding

    was :

    $this->event->trigger('pre.view.' . str_replace('/', '.', $template), $data);

    now :

    $result = $this->registry->get('event')->trigger('view/' . $route . '/before', array(&$route, &$data))
    Triggers files has been changes. Now triggers are in following files
    1. system/engine/loader.php
    2. catalog/model/openbay/etsy_order.php
    3. catalog/model/openbay/ebay_openbay.php
    4. catalog/controller/startup/router.php
    5. admin/controller/startup/router.php
  7. Changes in email validation
    before :

    if (utf8_strlen($email) > 0 && preg_match('/^[^\@]+@.*.[a-z]{2,15}$/i', $email)) {


    if (utf8_strlen($email) > 0 && filter_var($email, FILTER_VALIDATE_EMAIL)) {

Magento2: Module File Structure

Magento 2 Module File structure

In Magento2, there are lots of differences you will find out, due to security purposes. Magento2 looks for the files that make up a module, including configuration files, in particular places inside the module file structure. Follow the predefined file structure to ensure that your module works as expected.

A module can live or can be place now anywhere in Magento root directory. Regardless of where you add it, you must be registered, for Registering your module we need to implement registeration.php file.

A typical file structure for a Magento 2 module:




































Main Directories

The main directories are:

  • Block — it contains PHP classes as part of MVC vertical implementation of module logic.
  • Controller — it contains PHP classes as part of MVC vertical implementation of module logic.
  • Helper — it contains PHP classes as part of MVC vertical implementation of module logic.
  • Model — it contains PHP classes as part of MVC vertical implementation of module logic.
  • Setup — it contains classes for module database structure and data setup which are invoked when installing or upgrading.

Additional directories

Additionally, there are folders for configuration and other ancillary functions for items like plug-ins, internationalization, and front-end layout files.

  • Api— it contains any PHP classes exposed to the API.
  • etc — it contains configuration files.
  • i18n — it contains localization different files, like language files.
  • Plugin — it contains any needed plugin files.
  • view — it contains non-object-oriented and non-static view level parts of the module such as design templates, email templates, and layout files.