как я могу перенаправить клиентов после выхода из системы на вид магазина по умолчанию в magento? При выходе из системы я перенаправляю их в другой вид магазина.
Перенаправление Magento после выхода из системы
- Вам нужно расширить значение
AccountController
по умолчанию для magento и переопределитьlogoutAction
вашим собственным целевым адресом. Этот ответ о том, как переопределить контроллеры, должен дать вам хорошую отправную точку: stackoverflow.com/ вопросы/6980026/переопределить-magento-контроллер 18.10.2012 - Я думаю, вы должны позволить
logoutAction
перенаправить вас наlogoutSuccessAction
, чтобы позволить magento повторно инициализировать контекст посетителя (куки). Например, если вы перенаправляете пользователя непосредственно на CMS/страницу, у вас могут возникнуть проблемы, поскольку файлы cookie magento не будут обновляться. Лучше переопределитьlogoutSuccessAction
, чемlogoutAction
18.10.2012 - @Bixi В чем может быть разница? logoutSuccess ничего не делает с точки зрения файлов cookie, как любая другая страница. Это было бы похоже на то, как если бы пользователь впервые попал на домашнюю страницу. Или я что-то упускаю? 19.10.2012
- @benmarks Да, извините, проблема возникает только тогда, когда MagentoEntreprise FullPageCache активирован. Когда cms/страница уже кэширована с помощью FPC, возникает ошибка, из-за которой создание файлов cookie не работает, поскольку FPC обходит некоторые слои верхнего уровня, обычно используемые для инициализации файлов cookie. 19.10.2012
- @Bixi - ОЧЕНЬ приятно знать, но если это так, как это влияет на домашние страницы, которые обычно являются страницами CMS? Есть ли особый случай, когда загружается URL-адрес по умолчанию? 19.10.2012
- @benmarks Не могу вспомнить это полностью, но мой случай был немного сложным: у меня была форма входа на главной странице (это была cms/страница), и когда пользователь отправил форму, он получил страницу «Включить файлы cookie» (мы не хотел деактивировать его) потому что magento не обновлял куки... В любом случае, это был плохой день 19.10.2012
Ответы:
К сожалению, нет удобного обработчика событий для управления местом перенаправления выхода из системы.
Mage_Customer_AccountController::logoutAction()
устанавливает перенаправление на ::logoutSuccessAction()
в объекте ответа после отправки события customer_logout
, и это рендеринг шаблона customer/logout.phtml, который использует PHP для установить эхо-параметр javascript для перенаправления на домашнюю страницу без возможности OOB передать аргумент для альтернативного перенаправления на основе JS.
Я думаю, что самым чистым решением было бы наблюдать controller_action_postdispatch_customer_account_logout
, захватывать объект контроллера и перезаписывать заголовок местоположения, используя метод setRedirectWithCookieCheck()
объекта ответа:
public function logoutRedirect($obs)
{
$obs->getControllerAction()
->setRedirectWithCookieCheck(/* your URL param(s) */);
}
Я знаю, что это не элегантно, но самый простой способ, который я нашел, — это скопировать и изменить файл шаблона по адресу app/design/frontend/base/default/template/customer/logout.phtml
в каталог вашей собственной темы.
Конкретно эта строка:
<p><?php echo Mage::helper('customer')->__('You have logged out and will be redirected to our homepage in 5 seconds.') ?></p>
<script type="text/javascript">
//<![CDATA[
setTimeout(function(){ location.href = '<?php echo $this->getUrl() ?>'},5000);
//]]>
</script>
Изменяя URL-адрес location.href и даже время ожидания, вы можете указать пользователю куда угодно сразу после выхода из системы. Например.:
<script type="text/javascript">
//<![CDATA[
setTimeout(function(){ location.href = '<?php echo $this->getUrl('*/*/login') ?>'},500);
//]]>
</script>
Опять же, это не элегантно, но это должно быть достаточно быстрое перенаправление, чтобы быстрый переход на страницу затем переместил их на другой URL-адрес, в приведенном выше примере, обратно на экран входа в систему.
*/*/login
— это то, как Magento отслеживает module/controller/action
— см. здесь magentocommerce.com/wiki/5_ -_modules_and_development/ссылка/ 13.02.2013 Напишите следующий метод в Your Model > Observer .
public function customerLoggedOut(Varien_Event_Observer $observer)
{
$observer->getControllerAction()
->setRedirectWithCookieCheck(CustomUrl);
}
Customurl — это URL-адрес, на который вы хотите перенаправить после выхода из системы.
Если вам нужно полное решение для пользовательского перенаправления URL-адресов для вашего веб-сайта электронной коммерции после входа в систему, выхода из системы и регистрации. Расширение Custom Redirection может вам помочь. Нажмите на ссылку, чтобы получить расширение. http://www.magentocommerce.com/magento-connect/custom-redirection.html