2013-07-01 4 views
2

Кто-нибудь знает, где я могу найти функции, для которых ссылка на забытый пароль сброшена в электронном письме, которое отправляется пользователю?Magento - Создана ссылка на забытый пароль

По какой-то причине моя генерирует ссылку на сброс пароля с другим видом хранилища в URL-адресе, чем вид магазина, который использовался для сброса пароля.

Ссылка должна быть:

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

Но генерируется так:

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

+0

Эта проблема также существует в 1.8.1.0 – Cninroh

ответ

2

Шаблон электронной почты для этого является: приложение/локаль/langcode_COUNRTYCODE/шаблон /email/account_password_reset_confirmation.html

И линия, которая генерирует URL является

{{store url="customer/account/resetpassword/" _query_id=$customer.id _query_token=$customer.rp_token}} 
+0

Ahhh, большое вам спасибо! Я должен вам сейчас! – NateTheGreatt

3

Чтобы исправить это, откройте файл "приложение \ код \ 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 является получение идентификатор магазина, где был зарегистрирован пользователь, но нам нужен идентификатор магазина, где он сделал запрос сброса пароля. Нам просто нужно удалить некоторые линии и добавить новый:

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

Это сработало для меня, надеюсь, это поможет.

+0

Приобретено за то, что вы не делаете это изменение в ядре, но правильно перемещаете его в/локальный :) – siliconrockstar

Смежные вопросы