如何禁用 Prestashop 中某些控制器的模块挂钩?

How to disable module hooks for certain controllers in Prestashop?

我正在编写自己的模块,基本选项是从模块选项控制控制器。

我知道如何通过模块选项控制 tpl 和 js,但我无法从模块 php 文件中获得控制 Prestashop 控制器的方法。

就是想知道具体方法

我想要四个复选框,其中包含用于在 indexcms、[=23= 等四个控制器中启用或禁用模块的选项]类别, 产品.

我现在有:

$values = array('index','product','cms','category');
 if(in_array(Tools::getValue('controller'), $values)){
 return $this->display(__FILE__, 'mymodule.tpl');
}

并且此代码在主页(索引)、cms、类别和产品页面的这四个控制器中显示 tpl 文件内容。 但是如何从数组中放置一些触发器到 enable/disable 值?

为控制器创建一个配置字段:

public function getContent()
{
    if (Tools::isSubmit('MY_CONTROLLERS_LIST')) {
        Configuration::updateValue('MY_CONTROLLERS_LIST', (string)Tools::getValue('PS_MY_CONTROLLERS'));
    }

    $value = Configuration::get('MY_CONTROLLERS_LIST');

    return '<form action="" method="POST"><input name="PS_MY_CONTROLLERS" value="'.$value.'"><input type="submit" value="Save"></form>';
}

public function hookDisplayTop()
{
    $value = Configuration::get('PS_MY_CONTROLLERS');
    $controllers = explode(',', $value);

    if(in_array(Tools::getValue('controller'), $controllers)){
        return $this->display(__FILE__, 'mymodule.tpl');
    }

    return false;
}

这将出现在“模块”>“模块”>“配置”(您的模块)中。有可以呈现 PrestaShop 表单的表单助手,但这是一个简化的示例,表明您将需要一个提交到同一页面的表单。

此示例的控制器值应为 index,category,cms,product

另一种方式

转到 Modules > Positions 找到您的挂钩(例如 displayTop)和您的模块,单击 Edit。然后选择你不想显示块的页面。

正在生成选项表

正确的方法(但更复杂)是使用 PrestaShop

附带的 HelperFormHelperOptions 类 生成表单