并不是每个人对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方法中找到: 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语句里的代码。 (责任编辑:好模板) |