我想在我的prestashop安装中禁用联系表单,但没有插件可以这样做。有任何建议怎么做?
答案 0 :(得分:8)
通过禁用联系表单来取决于您的意思,但这里有几种可能性。
打开文件controllers/front/ContactController.php
并在ContactControllerCode
类中添加此代码。
public function init()
{
Tools::redirect('pagenotfound'); // redirect contact page to 404 page
}
创建新文件ContactController.php
并将其放在文件夹overrides/controllers/front/
中并添加以下代码
class ContactController extends ContactControllerCore {
public function init()
{
Tools::redirect('pagenotfound'); // redirect contact page to 404 page
}
}
在文件夹contactpagedisabler
中创建一个新目录modules
并在里面创建一个文件contactpagedisabler.php
并将此代码放入
class ContactPageDisabler extends Module
{
public function __construct()
{
$this->name = 'contactpagedisabler';
$this->tab = 'front_office_features';
$this->version = '1.0';
$this->author = 'whatever';
parent::__construct();
$this->displayName = $this->l('Contact page disabler');
$this->description = $this->l('Disables contact page.');
}
public function install()
{
return parent::install() && $this->registerHook('actionDispatcher');
}
// hook runs just after controller has been instantiated
public function hookActionDispatcher($params)
{
if ($params['controller_type'] === 1 && $params['controller_class'] === 'ContactController') {
Tools::redirect('pagenotfound'); // redirect contact page to 404 page
}
}
}
然后从后台安装此模块。
第二个选项最简单,它不会干扰核心文件。
第三个选项对于这么小的东西来说可能有点过分,但它不需要覆盖,如果你或商店经理需要回复联系页面,他可以从后台禁用该模块。 该模块也可以通过配置页面进行扩展/修改,您可以在其中获取商店中所有页面的列表,并让用户决定启用/禁用哪些页面等。
2018年4月更新
忘记前两个选项并使用第三个选项。修改商店时,请务必使用模块(如果可能)。
答案 1 :(得分:4)
如果您想阻止联系表单,但您想显示联系人页面您可以放入override \ controllers \ front \ ContactController.php:
<?php
class ContactController extends ContactControllerCore
{
public function postProcess()
{
if (Tools::isSubmit('submitMessage'))
{die('Form disabled');}
else
parent::postProcess();
//return null;
}
}
&#13;
然后你可以从主题剪切联系表格:/themes/YOUR-THEME/contact-form.tpl 不显示联系表格
之后您必须删除文件/cache/class_index.php以刷新prestashop中的类。
答案 2 :(得分:0)
Barto的解决方案也可以不加覆盖地实现。
创建另一个模块contactformdisabler
class ContactFormDisabler extends Module
{
public function __construct()
{
$this->name = 'contactformdisabler';
$this->tab = 'front_office_features';
$this->version = '1.0';
$this->author = 'whatever';
parent::__construct();
$this->displayName = $this->l('Contact form disabler');
$this->description = $this->l('Disables contact form submission.');
}
public function install()
{
return parent::install() && $this->registerHook('actionDispatcher');
}
public function hookActionDispatcher($params)
{
if ($params['controller_type'] === 1
&& $params['controller_class'] === 'ContactController'
&& Tools::isSubmit('submitMessage')) {
die('Contact form submission disabled');
}
}
}