禁用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语句里的代码。
电商网站开发服务。
版权声明:本站内容源自互联网,如有内容侵犯了你的权益,请联系删除相关内容。
上一篇:Magento配置计划任务 下一篇:重写Magento块,模型,助手和控制器