2

ユーザーに送信された電子メールで、パスワードを忘れたリセットリンクが生成される場所の関数がどこにあるか知っている人はいますか?

奇妙な理由で、パスワードのリセットに使用されたストア ビューとは異なる URL のストア ビューを使用して、パスワードのリセット リンクを生成しています。

リンクは次のようになります。

example.com/customer/account/resetpassword/?id=555&token=55555555555555555

しかし、それはそのように生成されています:

example.com/otherStoreView/customer/account/resetpassword/?id=555&token=55555555555555555

4

2 に答える 2

3

これを修正するには、ファイル「app\code\local\Mage\Customer\Model\Customer.php」を開きます。

関数sendPasswordResetConfirmationEmail()を探します。685号線の近くです。

この関数は次のようになります。

    /**
 * Send email with reset password confirmation link
 *
 * @return Mage_Customer_Model_Customer
 */
public function sendPasswordResetConfirmationEmail()
{
    $storeId = $this->getStoreId();
    if (!$storeId) {
        $storeId = $this->_getWebsiteStoreId();
    }

    $this->_sendEmailTemplate(self::XML_PATH_FORGOT_EMAIL_TEMPLATE, self::XML_PATH_FORGOT_EMAIL_IDENTITY,
        array('customer' => $this), $storeId);

    return $this;
}

この関数では、Magento はユーザーが登録されたストア ID を取得していますが、ユーザーがパスワード リセット リクエストを行ったストア ID が必要です。いくつかの行を削除して新しい行を追加するだけです:

public function sendPasswordResetConfirmationEmail()
{
    # this will get the current store ID
    $storeId = Mage::app()->getStore()->getStoreId();

    $this->_sendEmailTemplate(self::XML_PATH_FORGOT_EMAIL_TEMPLATE, self::XML_PATH_FORGOT_EMAIL_IDENTITY,
        array('customer' => $this), $storeId);

    return $this;
}

これは私にとってはうまくいきました。

于 2015-11-30T07:17:17.027 に答える
2

そのための電子メール テンプレートは次のとおりです: app/locale/langcode_COUNRTYCODE/template/email/account_password_reset_confirmation.html

URLを生成する行は

{{store url="customer/account/resetpassword/" _query_id=$customer.id _query_token=$customer.rp_token}}
于 2013-07-01T19:53:18.290 に答える