如何禁用 Prestashop 中某些控制器的模块挂钩?
How to disable module hooks for certain controllers in Prestashop?
我正在编写自己的模块,基本选项是从模块选项控制控制器。
我知道如何通过模块选项控制 tpl 和 js,但我无法从模块 php 文件中获得控制 Prestashop 控制器的方法。
就是想知道具体方法
我想要四个复选框,其中包含用于在 index、cms、[=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
附带的 HelperForm
或 HelperOptions
类 生成表单
我正在编写自己的模块,基本选项是从模块选项控制控制器。
我知道如何通过模块选项控制 tpl 和 js,但我无法从模块 php 文件中获得控制 Prestashop 控制器的方法。
就是想知道具体方法
我想要四个复选框,其中包含用于在 index、cms、[=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
附带的HelperForm
或 HelperOptions
类 生成表单