我正在编写自己的模块,基本选项是从模块选项中控制控制器。
我知道如何通过模块选项控制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文件内容。 但是如何设置一些触发器来启用/禁用数组中的值?
答案 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附带的HelperForm
或HelperOptions
类生成表单