当前位置: 首页 > 知识库问答 >
问题:

Prestashop 1.7创建管理模块

笪建章
2023-03-14

嗨,我是prestashop的新手,我尝试创建一个1.7版的管理模块。我会创建一个新的菜单来显示模板和管理我的数据库

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;
    }
}

模块/mymodule/controller/admin/MyModuleController。php:

<?php
class MyModuleController extends ModuleAdminController
{
    public function renderList() {
        $this->content = $this->createTemplate('mymodule.tpl')->fetch();
        return $this->content;
    }
}
?>

模块/mymodule/views/templates/admin/mymodule。第三方物流:

{block name="page_title"}
    {l s='Mon module'}
{/block}
<section >
    <div>Hello world !</div>
</section>

我用很多教程1.7/1.6的编译创建了这个,但是安装失败了。Prestashop为我们提供了一个留档来创建第一个模块,但它并没有真正记录下来,我在互联网上找不到任何真正有用的东西。

有什么帮助/建议吗?

谢谢

EDIT1:好的,安装是正确的,我的选项卡被创建了,但是当我点击它时,它调用“controller=MyModule”,并且找不到模块控制器。差不多完成了。

共有2个答案

茅和玉
2023-03-14

您的模块的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;
    }
萧光华
2023-03-14

模块的install()方法必须返回true/false。

对于从ModuleAdminController

$this->createTemplate($template); 

尝试查找模板并加载它在其中找到的第一个模板:

  1. /当前主题/modules/yourmodule/views/templates/admin/
  2. /模块/您的模块/视图/模板/管理员/

因此,如果您使用路径调用createTemplate(),它将附加到上面两个文件夹中的任何一个,并且它找不到您的模板,这将抛出一个错误。

将模板移动到modules/yourmodule/views/templates/admin/中,并仅使用模板名称调用create方法。

$this->createTemplate('mymodule.tpl');
 类似资料:
  • 本文介绍创建和管理数据表的基本 SQL 操作和规范。 创建和管理表 SQL 语句参阅: CREATE TABLE DROP TABLE FLASHBACK TABLE RENAME TABLE ALTER TABLE RECOVER TABLE 表命名规范 同一业务或者模块的表尽可能使用相同的前缀,表名称尽可能表达含义; 多个单词以下划线分隔,不推荐超过32个字符。 建议对表的用途进行注释说明,以

  • 本文介绍创建和管理数据库的基本 SQL 操作和规范。 创建和管理库 SQL 语句参阅: CREATE DATABASE DROP DATABASE ALTER DATABASE 库命名规范 建议按照业务、产品线或者其它指标进行区分,一般不要超过 20 个字符。如:临时库(tmp_crm)、测试库(test_crm)。

  • 卷是一种块存储设备。我们把卷挂载在实例实例上,从而达到持久化存储的目的。您可以随时将某个卷安装在一个运行中的实例上,或者从实例上卸载卷,再把它安装再另一个实例上。您还可以给卷拍快照,以及删除卷等等。但只有管理员才能指定卷的类别。 创建卷 登录控制台。 在PROJECT选框中选择希望操作的Project。 在PROJECT选项卡种,打开Compute选项卡,然后点击Volumes子项。 点击Crea

  • 仅企业版可用 请求header PUT /v1/account/createActManager Authorization:Bearer {ACCESS TOKEN} 注: 请将上方的{ACCESS TOKEN}替换为您的ACCESS TOKEN 请求payload { "username" : "管理员A", "cost_type" : "1", "cost_limi

  • 本文介绍创建和管理索引的基本 SQL 操作和规范。 创建和管理索引 SQL 语句参阅: CREATE INDEX ADD INDEX DROP INDEX RENAME INDEX SHOW INDEXES [FROM|IN] 索引命名规范 唯一索引:uk_[表名称简写]_[字段名简写] 普通索引:idx_[表名称简写]_[字段名简写] 多单词组成的 column_name,取尽可能代表意义的缩写

  • 在对OpenStack网络进行操作前,请先设置如下环境变量: export OS_USERNAME=admin export OS_PASSWORD=password export OS_TENANT_NAME=admin export OS_AUTH_URL=http://localhost:5000/v2.0 创建网络 列出neutron工具的扩展功能: $ neutron ext-