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. 管理者を通じてショップBのアカウントを作成します
  2. パスワードリマインダーをショップBスタイルで送信する

編集:次の質問は、ユーザーを管理者からショップに関連付けるという意味で関連しています:Magentoで顧客のstore_idを変更したり、新しい顧客を作成するときに「created_from」属性を設定したりするにはどうすればよいですか。

4

1 に答える 1

0

デフォルトでは、特定のストアにリンクされている管理者からアカウントを作成することは不可能のようです。しかし、adminhtml_customer_prepare_saveを聞いて、アカウント作成フォームの「送信元」を悪用することで、方法を見つけました。

これが私がそれのために作り上げたモジュールです:

etc \ 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>

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

アカウントが管理者によって作成されたことを検出できなくなることに注意してください。

于 2012-08-17T08:01:32.883 に答える