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')); 
    } 
    } 
} 

請注意,你不會能夠檢測到該帳戶是由管理員創建的。