0

我有一个带有共享电子邮件模板的多商店设置(商店 A 和 B)。在这些模板中,我引用了区别于 A 和 B 的自定义变量。

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

这很好用,除了 1 个问题:当我通过管理员为商店 B 创建帐户时,我无法获得商店 B 的密码提醒。向该用户发送新密码将始终作为商店 A 发送。

请注意,发送的欢迎邮件正确的(B),但我猜只是因为您从“创建帐户”屏幕中选择了发送商店。

我确实意识到该帐户被标记为由管理员而不是商店 B 创建,而不是通过商店 B 注册时。我可以想象这可能会导致问题,但是,我真的很想找到一种方式:

  1. 通过管理员为 Shop B 创建一个帐户
  2. 以 Shop B 风格发送密码提醒

编辑:以下问题与将用户与管理员的商店相关联的意义相关:如何在 Magento 中更改客户 store_id 或在创建新客户时设置“created_from”属性

4

1 回答 1

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>

模型\观察者.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'));
    }
  }
}

请注意,您将无法再检测到该帐户是使用管理员创建的。

于 2012-08-17T08:01:32.883 回答