Prestashop:禁用联系表单

时间:2016-08-12 11:28:08

标签: prestashop prestashop-1.6

我想在我的prestashop安装中禁用联系表单,但没有插件可以这样做。有任何建议怎么做?

3 个答案:

答案 0 :(得分:8)

通过禁用联系表单来取决于您的意思,但这里有几种可能性。

  1. 修改核心联系人控制器(不推荐,因为在更新Prestashop时会丢失自定义代码)
  2. 打开文件controllers/front/ContactController.php并在ContactControllerCode类中添加此代码。

    public function init()
    {
        Tools::redirect('pagenotfound'); // redirect contact page to 404 page
    }
    
    1. 覆盖联系人控制器
    2. 创建新文件ContactController.php并将其放在文件夹overrides/controllers/front/中并添加以下代码

      class ContactController extends ContactControllerCore {
          public function init()
          {
              Tools::redirect('pagenotfound'); // redirect contact page to 404 page
          }
      }
      
      1. 创建一个小模块
      2. 在文件夹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;
&#13;
&#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');
        }
    }
}