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

时间:2015-06-10 14:00:35

标签: php prestashop

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

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

我想知道怎么做的方式。

我希望有四个复选框,其中包含在四个控制器中启用或禁用模块的选项,例如索引 cms 类别产品

我现在:

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

此代码在主页(索引),cms,类别和产品页面中的这四个控制器中显示tpl文件内容。 但是如何设置一些触发器来启用/禁用数组中的值?

1 个答案:

答案 0 :(得分:0)

为控制器创建配置字段:

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

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

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

另一种方式

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

生成选项表单

正确的方法(但更复杂)是使用PrestaShop附带的HelperFormHelperOptions类生成表单