How To Create Your First Module On PrestaShop 1.16

Amigoways Explain how to create your first module on PrestaShop with these easy step-by-step instructions.

We need to create our module’s folder in the folder modules which is located in the root folder. The modules folder contains all the PrestaShop modules. All basic modules will be found here.

The folder structure will be shown below.

If the module folder name is newmodule, it should have a file name called newmodule.php.

The index is the starting file of the module.

In the  newmodule.php  file, you must create a constructor to have basic info such as compatibility, name, author and displayName. The format is as follows.

if (!defined('_PS_VERSION_'))


class Newmodule extends Module

public function __construct()


$this->name = ‘New Module’;

$this->tab = ”;

$this->version = ‘1.0.0’;

$this->author = ‘Amigoways Technologies’;

$this->need_instance = 1;

$this->ps_versions_compliancy = array(‘min’ => ‘’, ‘max’ => _PS_VERSION_);

$this->bootstrap = true;


$this->displayName = ‘New Module’;

$this->description = ‘This module is a sample module.’;

$this->confirmUninstall = $this->l(‘Are you sure you want to uninstall?’, ‘newmodule’);



Then install & uninstall. functions to run the to-do function when the module is installed / uninstalled.

public function install()


//to do code

return parent::install() && $this->registerHook(‘hook_function_name’) ;


public function uninstall()


//to do code

if (!parent::uninstall() || !Configuration::deleteByName(‘newmodule’))

return false;

return true;


For eg., To display the content on the home page, the function name is like hookDisplayHome. hookDisplay is a hook to assist your code to the PrestaShop events.

public function hookDisplayHome($params)



array(‘param’ => value )


return $this->display(__FILE__, module:newmodule/views/templates/hook/filename.tpl);


To load the view file,

$this->display(__FILE__, module:newmodule/views/templates/hook/filename.tpl)

To have the configuration settings for the admin, the function getContent is used to exist.

public function getContent()


$fields_form[0][‘form’] = array( ‘legend’ => array( ‘title’ => $this->l(‘New Module’), ),

‘input’ => array( array( ‘type’ => ‘text’, ‘label’ => $this->l(‘title’), ‘name’ => ‘title’, ‘lang’ => true, ‘size’ => 20, ‘required’ => true ), ),

‘submit’ => array( ‘title’ => $this->l(‘Save’), ‘class’ => ‘btn btn-default pull-right’ )

); $helper = new HelperForm();

$helper->module = $this;

$helper->name_controller = $this->name;

$helper->token = Tools::getAdminTokenLite(‘AdminModules’);

$helper->currentIndex = AdminController::$currentIndex.’&configure=’.$this->name;

$helper->title = $this->displayName;

$helper->show_toolbar = true; // false -> remove toolbar

$helper->toolbar_scroll = true; // yes – > Toolbar is always visible on the top of the screen.

$helper->submit_action = ‘submit’.$this->name;

$helper->toolbar_btn = array( ‘save’ => array( ‘desc’ => $this->l(‘Save’), ‘href’ => AdminController::$currentIndex.’&configure=’.$this->name.’&save’.$this->name. ‘&token=’.Tools::getAdminTokenLite(‘AdminModules’), ), ‘back’ => array( ‘href’ => AdminController::$currentIndex.’&token=’.Tools::getAdminTokenLite(‘AdminModules’), ‘desc’ => $this->l(‘Back to list’) ) );

// < load current value > $helper->fields_value[‘title’] = Configuration::get(‘title’);

return $helper->generateForm($fields_form);



Amigoways regularly publishes tutorial blog posts on Module & Plugin development. Stay in touch with them for the latest updates and to learn more about building advanced modules.