Nano Hash - криптовалюты, майнинг, программирование

Перенаправление Magento после выхода из системы

как я могу перенаправить клиентов после выхода из системы на вид магазина по умолчанию в magento? При выходе из системы я перенаправляю их в другой вид магазина.

18.10.2012

  • Вам нужно расширить значение 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

Ответы:


1

К сожалению, нет удобного обработчика событий для управления местом перенаправления выхода из системы.

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) */);
}
18.10.2012

2

Я знаю, что это не элегантно, но самый простой способ, который я нашел, — это скопировать и изменить файл шаблона по адресу 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-адрес, в приведенном выше примере, обратно на экран входа в систему.

18.10.2012
  • Хотите поделиться причиной отрицательного голоса? Это законный ответ на вопрос. 19.10.2012
  • */*/login — это то, как Magento отслеживает module/controller/action — см. здесь magentocommerce.com/wiki/5_ -_modules_and_development/ссылка/ 13.02.2013
  • О, шакалы, извините. я удаляю свой комментарий 15.02.2013
  • очень хорошее решение, предотвращающее редактирование файла контроллеров, большое спасибо @ philwinkle 26.04.2014

  • 3

    Напишите следующий метод в 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

    29.11.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..