西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > magento教程 >

禁用Magento默认的通讯交易邮件

时间:2017-01-20 13:13来源:未知 作者:好模板 点击:
并不是每个人对Magento中的通讯选项满意,所以他们选择第三方服务。在这种情况下,关闭Magento默认的通讯交易邮件并让第三方服务来接管电子邮件是一个好主意。在这篇文章中我将演

并不是每个人对Magento中的通讯选项满意,所以他们选择第三方服务。在这种情况下,关闭Magento默认的通讯交易邮件并让第三方服务来接管电子邮件是一个好主意。在这篇文章中我将演示如何关闭Magento中默认的通讯交易邮件。

首先,我们重写核心文件中的config.xml

<newsletter>
	<rewrite>
		<subscriber>Alwayly_Newsletter_Model_Newsletter_Subscriber</subscriber>
	</rewrite>
</newsletter>

创建system.xml,把下面的代码放进去:

<?xml version="1.0"?>
 
<config>
   <tabs>
        <alwayly_tab translate="label">
            <label>Alwayly</label>
            <sort_order>200</sort_order>
        </alwayly_tab>
    </tabs>
 
    <sections>
        <alwayly_newsletter translate="label">
            <label>Newsletter Configuration</label>
            <tab>alwayly_test_tab</tab>
           <frontend_type>text</frontend_type>
            <sort_order>1</sort_order>
            <show_in_default>1</show_in_default>
            <show_in_website>1</show_in_website>
            <show_in_store>1</show_in_store>
            <groups>
                <newsletter_subscription_transactional_mails>
                   <label>Newsletter Subscription Transactional Mails</label>
                    <frontend_type>text</frontend_type>
                    <show_in_default>1</show_in_default>
                    <show_in_website>1</show_in_website>
                    <show_in_store>1</show_in_store>
                    <sort_order>120</sort_order>
                    <fields>
                        <enabled translate="label">
                           <label>Enable</label>
                            <frontend_type>select</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>40</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </enabled>
                    </fields>
                </newsletter_subscription_transactional_mails>
            </groups>
        </alwayly_newsletter>
    </sections>
</config>

下一步,我们将添加我们的配置路径到Helper类和一个获取值的方法:

class Alwayly_Newsletter_Helper_Data extends Mage_Core_Helper_Abstract
{
    const XML_PATH_NEWSLETTER_MAILS  = 'alwayly_newsletter/newsletter_subscription_transactional_mails/enabled';
 
    public function getNewsletterSubscriptionMailEnabled()
    {
        return Mage::getStoreConfig(self::XML_PATH_NEWSLETTER_MAILS);
    }
}

最后一步就是编辑几个以前我们改写过的核心方法。我们新的模型类是Alwayly_Newsletter_Model_Newsletter_Subscriber,它扩展自Mage_Newsletter_Model_Subscriber类。类名取决于你的模块,我们经常要扩展核心类,否则将无法正常工作。

你将需要从核心类里拷贝3个方法到我们的新类中并做一些调整。

  • 公用方法subscribe($email)
  • 公用方法subscribeCustomer($customer)
  • 公用方法unsubscribe()

在subscribe方法中找到:

if ($isConfirmNeed === true
	&& $isOwnSubscribes === false
) {
	$this->sendConfirmationRequestEmail();
} else {
	$this->sendConfirmationSuccessEmail();
}

用下面的代码替换:

if ((bool) Mage::helper('alwayly_newsletter')->getNewsletterSubscriptionMailEnabled()) {
    if ($isConfirmNeed === true && $isOwnSubscribes === false) {
        $this->sendConfirmationRequestEmail();
    } else {
        $this->sendConfirmationSuccessEmail();
    }
}

在subscribeCustomer方法中找到:

if ($this->getIsStatusChanged() && $status == self::STATUS_UNSUBSCRIBED) {
    $this->sendUnsubscriptionEmail();
} elseif ($this->getIsStatusChanged() && $status == self::STATUS_SUBSCRIBED) {
    $this->sendConfirmationSuccessEmail();
}

替换成:

if ((bool) Mage::helper('alwayly_newsletter')->getNewsletterSubscriptionMailEnabled()) {
    if ($this->getIsStatusChanged() && $status == self::STATUS_UNSUBSCRIBED) {
        $this->sendUnsubscriptionEmail();
    } elseif ($this->getIsStatusChanged() && $status == self::STATUS_SUBSCRIBED) {
        $this->sendConfirmationSuccessEmail();
    }
}

最后一个unsubscribe方法中:

$this->sendUnsubscriptionEmail();

替换为:

if ((bool) Mage::helper('alwayly_newsletter')->getNewsletterSubscriptionMailEnabled()) {
    $this->sendUnsubscriptionEmail();
}

这意味着,我们首先检查我们的配置选项设置为启用或禁用。如果设置为禁用则不执行if语句里的代码。

(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容