2012-08-15 108 views
0

我有一个共享电子邮件模板的多层设置(商店A和B)。在这些模板,我引用分化在A和B自定义变量Magento多店电子邮件模板

Shop A ==\       /==> Custom Var (version A) 
      >==> E-mail Template X ==< 
Shop B ==/       \==> Custom Var (version B) 

这工作得很好,除了1个问题:当我通过管理为B铺创建一个帐户,我不能得到密码提醒要开店B.发送该用户的新密码会一直发出如商店A.

记住,被发送的邮件的欢迎,正确的(B),但我想只是因为你选择从创建帐户屏幕发送商店。

我知道这个帐户被标记为由管理员而不是商店B创建,而不是通过商店B注册。我可以想象这可能会导致问题,但我仍然会真的想找到一种方法:

  1. 通过管理
  2. 有在B铺式发送的密码提示创建B铺的帐户

编辑:下面的问题是在这个意义上,是关于用户与管理员商店关联会谈相关:How can I change a customer store_id in Magento or set the "created_from" attribute when creating a new customer

回答

0

似乎在默认情况下,它只是无法从已连结管理员创建一个帐户到特定的商店。我确实找到了一种方法,通过监听adminhtml_customer_prepare_save并滥用帐户创建表单中的“发送”。

下面是我掀起了它的模块:

等\ config.xml文件:

<config> 
    <modules> 
    <Company_AccountPerStore> 
     <version>1.0</version> 
    </Company_AccountPerStore> 
    </modules> 
    <global> 
    <models> 
     <accountperstore> 
     <class>Company_AccountPerStore_Model</class> 
     </accountperstore> 
    </models> 
    </global> 
    <adminhtml> 
    <events> 
     <adminhtml_customer_prepare_save> 
     <observers> 
      <accountperstore_observer> 
      <class>Company_AccountPerStore_Model_Observer</class> 
      <method>customerPrepareSave</method> 
      </accountperstore_observer> 
     </observers> 
     </adminhtml_customer_prepare_save> 
    </events> 
    </adminhtml> 
</config> 

型号\ Observer.php:

class Company_AccountPerStore_Model_Observer extends Varien_Object 
{ 
    public function customerPrepareSave($observer) 
    { 
    $customer = $observer->getEvent()->getCustomer(); 

    if (!$customer->hasStoreId() && $customer->hasData('sendemail_store_id')) { 
     $customer->setStoreId($customer->getData('sendemail_store_id')); 
    } 
    } 
} 

请注意,你不会能够检测到该帐户是由管理员创建的。