Using the backward compatibility toolkit

Description

PrestaShop's module API has greatly improved between version 1.4 and version 1.5 of the software.

Because there is a huge ecosystem of modules that are being upgraded to support the 1.5 module API while many shops are still using PrestaShop 1.4, the developers of PrestaShop chose to build Backward Compatibility, a free toolkit which is only available for PrestaShop 1.4, and makes it possible to make 1.5 modules work in PrestaShop 1.4.

Including this toolkit makes it possible to develop a 1.4 module that uses PrestaShop 1.5 standards.

The 1.5 API's Helpers (HelperForm, HelperView, etc.) are still not available in PrestaShop 1.4.

Therefore, the following declarations are not necessary anymore:

global $smarty, $cookie;

The information they provide is available through these calls:

$this->context->customer->id;
$this->context->language->id;
$this->context->smarty->assign('content', 'empty');
...

Download and install

You can download it directly from PrestaShop's repository: https://github.com/PrestaShop/PrestaShop-backward_compatibility .
Just clone the Git project, then copy the /backward_compatibility folder to the root folder of the module you are developing. For instance, if your module is called TestModule, the folder should be here: /modules/testmodule/backward_compatibility.

The /backward_compatibility folder should contain the following files:

 

It is useless the install the module in PrestaShop 1.5.

How to use the module

To properly us the module, you must first declare it in the module constructor method:

public function __construct()
{
    $this->name = 'testmodule';
    $this->tab = 'other';
    $this->version = '0.1';
    $this->author = 'Firstname Lastname';
    $this->need_instance = 0;

    parent::__construct();

    $this->displayName = $this->l('Test module');
    $this->description = $this->l('This is a test module');
    $this->confirmUninstall = $this->l('Warning: all the data saved in your database will be deleted. Are you sure you want uninstall this module?');

    /* Backward compatibility */
    if (_PS_VERSION_ < '1.5')
           require(_PS_MODULE_DIR_.$this->name.'/backward_compatibility/backward.php');
}

Once this is in place, you can use more of the 1.5 API's goodness, such as the Context.