Prestashop 1.7 创建管理模块
Prestashop 1.7 create admin module
您好,我是 prestashop 的新手,我尝试为 1.7 创建一个管理模块。
我会创建一个新菜单来显示模板并管理我的数据库。
modules/mymodule/mymodule.php :
<?php
if (!defined('_PS_VERSION_'))
{
exit;
}
class MyModule extends Module
{
public function __construct()
{
$this->name = 'mymodule';
$this->tab = 'administration';
$this->version = '1.0.0';
$this->author = 'John doe';
$this->bootstrap = true;
parent::__construct();
$this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
$this->displayName = $this->l('Mon module');
$this->description = $this->l('On test la creation de module presta.');
}
public function install()
{
// Install Tabs
$tab = new Tab();
$tab->active = 1;
$tab->class_name = "MyModule";
$tab->module = 'mymodule';
$tab->name = array();
$tab->id_parent = (int)Tab::getIdFromClassName('SELL');
$tab->position = 3;
foreach ($lang as $l) {
$tab->name[$l['id_lang']] = $this->l('Mon module');
}
$tab->add();
if (!parent::install())
return false;
return true;
}
public function uninstall()
{
// Uninstall Tabs
$tab = new Tab((int)Tab::getIdFromClassName('Mymodule'));
$tab->delete();
// Uninstall Module
if (!parent::uninstall())
return false;
return true;
}
}
module/mymodule/controller/admin/MyModuleController.php :
<?php
class MyModuleController extends ModuleAdminController
{
public function renderList() {
$this->content = $this->createTemplate('mymodule.tpl')->fetch();
return $this->content;
}
}
?>
modules/mymodule/views/templates/admin/mymodule.tpl:
{block name="page_title"}
{l s='Mon module'}
{/block}
<section >
<div>Hello world !</div>
</section>
我用1.7 / 1.6很多教程的汇编创建的但是安装失败。
Prestashop 为我们提供了创建第一个模块的文档,但它并没有真正的文档化,而且我在互联网上找不到任何对 1.7 有帮助的东西。
有 help/suggestions 吗?
谢谢
EDIT1:好的,安装正确,我的选项卡已创建,但是当我单击它时它调用 "controller=MyModule" 并且未找到模块控制器。快完成了。
模块的 install()
方法必须 return 一个 true/false.
至于从 ModuleAdminController
加载模板
$this->createTemplate($template);
尝试查找模板并加载它在以下位置找到的第一个模板:
- /current_theme/modules/yourmodule/views/templates/admin/
- /modules/yourmodule/views/templates/admin/
因此,如果您使用路径调用 createTemplate()
,它会附加到上面两个文件夹中的任何一个,但它找不到您的模板并抛出错误。
将您的模板移至 modules/yourmodule/views/templates/admin/
并仅使用模板名称调用创建方法。
$this->createTemplate('mymodule.tpl');
您的模块的 install() 函数似乎有问题。您正在注册的挂钩似乎也是错误的。试试下面的代码,它对我们有用:
public function install()
{
if (!parent::install() ||
!$this->registerHook('header')) {
return false;
}
if (Shop::isFeatureActive()) {
Shop::setContext(Shop::CONTEXT_ALL);
}
$lang = Language::getLanguages();
$tab = new Tab();
$tab->class_name = 'AdminTestimonialSetting';
$tab->module = 'testimonial';
$tab->id_parent = 2;
$tab->position = 6;
foreach ($lang as $l) {
$tab->name[$l['id_lang']] = $this->l('Testimonial');
}
$tab->save();
return true;
}
您好,我是 prestashop 的新手,我尝试为 1.7 创建一个管理模块。 我会创建一个新菜单来显示模板并管理我的数据库。
modules/mymodule/mymodule.php :
<?php
if (!defined('_PS_VERSION_'))
{
exit;
}
class MyModule extends Module
{
public function __construct()
{
$this->name = 'mymodule';
$this->tab = 'administration';
$this->version = '1.0.0';
$this->author = 'John doe';
$this->bootstrap = true;
parent::__construct();
$this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
$this->displayName = $this->l('Mon module');
$this->description = $this->l('On test la creation de module presta.');
}
public function install()
{
// Install Tabs
$tab = new Tab();
$tab->active = 1;
$tab->class_name = "MyModule";
$tab->module = 'mymodule';
$tab->name = array();
$tab->id_parent = (int)Tab::getIdFromClassName('SELL');
$tab->position = 3;
foreach ($lang as $l) {
$tab->name[$l['id_lang']] = $this->l('Mon module');
}
$tab->add();
if (!parent::install())
return false;
return true;
}
public function uninstall()
{
// Uninstall Tabs
$tab = new Tab((int)Tab::getIdFromClassName('Mymodule'));
$tab->delete();
// Uninstall Module
if (!parent::uninstall())
return false;
return true;
}
}
module/mymodule/controller/admin/MyModuleController.php :
<?php
class MyModuleController extends ModuleAdminController
{
public function renderList() {
$this->content = $this->createTemplate('mymodule.tpl')->fetch();
return $this->content;
}
}
?>
modules/mymodule/views/templates/admin/mymodule.tpl:
{block name="page_title"}
{l s='Mon module'}
{/block}
<section >
<div>Hello world !</div>
</section>
我用1.7 / 1.6很多教程的汇编创建的但是安装失败。 Prestashop 为我们提供了创建第一个模块的文档,但它并没有真正的文档化,而且我在互联网上找不到任何对 1.7 有帮助的东西。
有 help/suggestions 吗?
谢谢
EDIT1:好的,安装正确,我的选项卡已创建,但是当我单击它时它调用 "controller=MyModule" 并且未找到模块控制器。快完成了。
模块的 install()
方法必须 return 一个 true/false.
至于从 ModuleAdminController
$this->createTemplate($template);
尝试查找模板并加载它在以下位置找到的第一个模板:
- /current_theme/modules/yourmodule/views/templates/admin/
- /modules/yourmodule/views/templates/admin/
因此,如果您使用路径调用 createTemplate()
,它会附加到上面两个文件夹中的任何一个,但它找不到您的模板并抛出错误。
将您的模板移至 modules/yourmodule/views/templates/admin/
并仅使用模板名称调用创建方法。
$this->createTemplate('mymodule.tpl');
您的模块的 install() 函数似乎有问题。您正在注册的挂钩似乎也是错误的。试试下面的代码,它对我们有用:
public function install()
{
if (!parent::install() ||
!$this->registerHook('header')) {
return false;
}
if (Shop::isFeatureActive()) {
Shop::setContext(Shop::CONTEXT_ALL);
}
$lang = Language::getLanguages();
$tab = new Tab();
$tab->class_name = 'AdminTestimonialSetting';
$tab->module = 'testimonial';
$tab->id_parent = 2;
$tab->position = 6;
foreach ($lang as $l) {
$tab->name[$l['id_lang']] = $this->l('Testimonial');
}
$tab->save();
return true;
}