Magento:通讯双选择加入也需要为注册客户


Magento: Newsletter double opt-in also needed for registered customers

我已经成功地为客人设置了时事通讯订阅,这样如果客人注册了时事通讯,他就会收到时事通讯确认请求电子邮件,他必须点击确认链接。这种"双重选择"是德国法律规定的每个时事通讯注册用户都需要的。

问题是已经注册的客户:他们可以在他们的帐户中订阅时事通讯,但这里没有双重选择。因此,在点击订阅后,他们会立即订阅时事通讯,而不会收到确认请求的电子邮件。

我发现只有旧的教程如何将其更改为注册客户的双重选择,但这些教程不再与我当前版本的Magento(1.5)一起工作。

那么我如何在app/code/core/Mage/Newsletter/Model/Subscriber.php中更改函数"订阅"以获得此行为?

如果它们具有与1.6相同的代码(或至少非常相似),那么您应该能够注释出public function subscribe($email)中的第291行:

$isOwnSubscribes = ($customerSession->isLoggedIn() && $ownerId == $customerSession->getId());

它将订阅标记为"未激活"而不是立即"已订阅"。作为参考,下面是这段代码:

// if user subscribes own login email - confirmation is not needed
$ownerId = Mage::getModel('customer/customer')
     ->setWebsiteId(Mage::app()->getStore()->getWebsiteId())
     ->loadByEmail($email)
     ->getId();
 $isOwnSubscribes = ($customerSession->isLoggedIn() && $ownerId == $customerSession->getId());
 if ($isOwnSubscribes == true){
      $this->setStatus(self::STATUS_SUBSCRIBED);
 }
 else {
      $this->setStatus(self::STATUS_NOT_ACTIVE);
 }

就在上面,它将$isOwnSubscribes标志设置为false,所以这将使它保持为假。您还可以注释掉$ownerId加载,因为它只在部分中用于检查用户是否订阅了自己的电子邮件。