[Prestashop development] Lesson 3: How to create a New page (controller) in Prestashop Admin?
One admin page ( it can be called as a controller) in Prestashop Backoffice is a properly page, you can directly view it from a URL like Catalog page, Products Manager, Orders Manager… You can view all admin pages of Prestashop in database from 2 tables: ps1_tab, ps1_tab_lang.
In this post, we will take to help you how to create a new page, a new controller in admin of Prestashop system.
Step 1: Create and Install a your prestashop custom module based on this post: Lesson 1: How to create a New module for Prestashop?
In this post, our prestashop custom module is buyaddonsexam module.
Step 2: Create a template *.tpl file for new admin page (admin controller)
1.Create a new directory: modules\your_module_name\views\templates\admin
2.Create a template file: modules\your_module_name\views\templates\admin\template2019.tpl with the content that contains any HTML, Smarty code, example:
<h2>This is a new admin page</h2>
<p>Hello buy-addons.com Team! </p>
Step 3: Create a PHP Controller file for new page. In my example, my controller is named “demo”.
1.Create a new PHP file in modules\your_module\controllers\admin\your_controller.php
Example my file: modules\buyaddonsexam\controllers\admin\demo.php
2. Declare a PHP Class is named [Your_controller]Controller contains initContent() method like sample file:
Download our demo.php file at here: admin_demo.php.txt
Change this PHP code to your controller:
- DemoController to your Class name: [Your_module]Controller
Explanation for code in this admin controller:
- Compile and output template file for admin controller, you can change buyaddonsexam/views/templates/admin/template2019.tpl to your path_to_template_file
$template_file = _PS_MODULE_DIR_. ‘buyaddonsexam/views/templates/admin/template2019.tpl’;
$content = $this->context->smarty->fetch($template_file);
- display a template to admin page
$this->context->smarty->assign(array(
‘content’ => $content,
));
Step 4: Register a new menu item for this controller in admin area.
Open a PHP file: modules\your_module\your_module.php
Example: modules\buyaddonsexam\buyaddonsexam.php
Go to Install() method and add this code for create a new menu item in admin area.
/////////////////
$tab = new Tab();
$tab->active = 1;
$tab->class_name = ‘Demo’;
$tab->position = 3;
$tab->name = array();
foreach (Language::getLanguages(true) as $lang) {
$tab->name[$lang[‘id_lang’]] = ‘Demo Page’;
}
$tab->id_parent = (int) Tab::getIdFromClassName(‘SELL’);
$tab->module = $this->name;
$tab->add();
$tab->save();
/////////////////////////
- $tab = new Tab(): create a menu item
- $tab->active = 1: Active this menu in admin area
- $tab->class_name = ‘Demo’: The Name of Controller (created it in step 3)
- $tab->name: Menu text is displayed in Admin
- $tab->id_parent: ID of parent menu, you can find ID in ps_tab from database.
- $tab->module: A module contain this admin controller
- $tab->add(), $tab->save(): Insert this menu into database (table: ps_tab, ps_tab_lang)
Reset your prestashop module, you can see a new menu item in left sidebar:
Step 5: View your page in browser.
Go to your prestashop website, enter URL: http://your-prestashop-store/ADMIN_DIR/index.php?controller=[Your_controller]
My example: http://your-prestashop-store/admin321/index.php?controller=demo
You can view your a new page like this in Prestashop 1.7
How to output variables from PHP file into page?
Step 1: In your PHP admin controller file, you have some variables. if you want display them in a prestashop page, you must assign there variables to template file (*.tpl) with the function: $this->context->smarty->assign(“name”, $value);
Step 2: Open a template file, example views\templates\front\template2019.tpl file, print it with statement:
{$store_url}
{$company_name}
There variables are displayed in new page:
You can read more some our other posts for develop extend controller for your prestashop store:
- Print Links, generate URLs from a template, *.tpl file in Prestashop 1.7 with {url}?
- How to create a New module for Prestashop?
Download our sample module
Download FULL buyaddonsexam.zip module for this post at here: buyaddonsexam_admin_controller.zip
Leave a reply
You must be logged in to post a comment.