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 回答