Поддержание всплывающего окна после отправки страницы - PullRequest
0 голосов
/ 09 апреля 2011

Мой клиент использует Magento , и после нажатия кнопки отправки форма отправляется на контроллер, а затем та же страница перезагружается.Он спросил меня, как только он нажимает на кнопку «Отправить», он хочет отобразить всплывающее окно.Поэтому я использовал div с отключенным фоном в качестве всплывающего окна в динамическом режиме (JavaScript), но поскольку кнопка «отправляет», страница обновляется, и я теряю всплывающее окно, поэтому возможно ли сохранить этот div отображенным даже после отправки

Ответы [ 4 ]

0 голосов
/ 18 апреля 2011

Учитывая, что вы не хотите задерживать отправку страницы, вам в основном нужно отобразить всплывающее окно после отправки страницы.Итак, используя какое-то общее событие (catalog_product_add_to_cart_after), добавьте переменную сеанса, например, такую:

public function observer($event) {
    Mage::getSingleton("customer/session")->setNeedsCartPopup(true);
}

Затем в своем шаблоне вы можете проверить существование этой переменной, чтобы показать ваше всплывающее окно:

$session = Mage::getSingleton("customer/session");
if($session->getNeedsCartPopup()) {
    $session->->setNeedsCartPopup(false);
    // echo HTML to display popup as the page loads
}

Это не проверенный код, но он должен дать вам представление о том, как захватить событие и ответить на него в шаблоне.Надеюсь, это поможет!

Спасибо, Джо

0 голосов
/ 09 апреля 2011

Я не знаком с Magneto, но, вообще говоря, не могли бы вы найти форму отправки в контроллере, когда страница перезагружается и вызвать всплывающее окно, если это правда?

0 голосов
/ 09 апреля 2011

Почему вы не используете слайд-панель вместо всплывающей панели?

Например, проверьте isLoggedin функцию Magento:

<?php
if ($this->helper('customer')->isLoggedIn() ) {
    echo "Welcome!";
} else {
    echo "Please log in.";
}
?>

если клиент зарегистрирован, показать необходимую информацию о клиенте на слайд-панели.

Если вы хотите хотя бы один раз показать эту панель, попробуйте методы наблюдателя событий magento:

Приложение / код / ​​ядро ​​/ Mage / Клиент / Модель / session.php

Имена событий:

  • customer_login
  • customer_session_init

Для jQuery Sliding Panel вы можете использовать jqEasy, который поддерживает свойство showOnLoad.

jqEasy

0 голосов
/ 09 апреля 2011

Пример запроса:

$(document).ready(function(){
    $('#form_selector').submit(function(){
        showDialog();
        //stop submit
        return false;
    });
    $('#dialog_button_selector').click(function(){
        //submit form
        $('#form_selector').submit();
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...