Необходимо отображать выбор пользователя в реальном времени в magento - PullRequest
2 голосов
/ 05 декабря 2011

Я разрабатываю интернет-магазин magento, где есть страница, где клиент может выбрать маршрут, по которому он / она хочет забрать заказ.Выбор в два раза и на данный момент два разных набора кнопок, поэтому нет флажка или переключателей.Сначала пользователь выбирает дату, а затем место.

Прямо сейчас я вызываю функцию javascript, которая загружает cookie при нажатии кнопки, затем перезагружает страницу и возвращает пользователя по ссылке привязки, чтобы пользователь не запутался, где он был при первом выборе.Когда страница перезагружается, боковая панель содержит php, который читает содержимое файлов cookie.Это не очень интуитивно понятно, и я уверен, что есть гораздо лучший способ сделать это.Выбор, сделанный пользователем, должен отображаться на боковой панели, которая представляет собой файл .phtml.Достаточно простого «вы выбрали маршрут x», прямо сейчас у меня есть эхо, но страница должна сначала перезагрузиться.

Итак, когда пользователь делает выбор, боковая панель должна обновляться с информацией овыбор, без перезагрузки страницы и возврата в исходное положение с помощью якорных ссылок.Уведомление должно быть предпочтительно на левой боковой панели.Я не думаю, что хочу использовать всплывающие окна или временные уведомления, но они могут быть дополнительной функцией.

Я уверен, что это очень простой вопрос, но по некоторым причинам я не могу найти правильные ключевые слова итогда есть само мадженто.

1 Ответ

0 голосов
/ 11 декабря 2011

ОК. Это лучший, который я когда-либо придумывал.Я до сих пор считаю, что это решено только частично, и я думаю, что могу получить больше помощи от сообщества magento, но пока это работает достаточно хорошо.

Включите этот скрипт в заголовок custom.phtml:

<script type="text/javascript">
function AJAX(){
   try{
      xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
      return xmlHttp;
   }
   catch (e){
      try{
         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
         return xmlHttp;
      }
      catch (e){
         try{
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            return xmlHttp;
         }
         catch (e){
            alert("Your browser does not support AJAX.");
            return false;
         }
      }
   }
}


// Timestamp for preventing IE caching the GET request (common function)

function fetch_unix_timestamp()
{
    return parseInt(new Date().getTime().toString().substring(0, 10))
}

// Reload div with php

function refreshdiv_timediv(){

   var seconds = '3';
   var divid = "ajax";
   var url = "routes/customer_needs_to_see_this.php";

   var xmlHttp_one = AJAX();

   // No cache

   var timestamp = fetch_unix_timestamp();
   var nocacheurl = url+"?t="+timestamp;


   // The code...

   xmlHttp_one.onreadystatechange=function(){
      if(xmlHttp_one.readyState==4){
         document.getElementById(divid).innerHTML=xmlHttp_one.responseText;
         setTimeout('refreshdiv_timediv()',seconds*1000);
      }
   }
   xmlHttp_one.open("GET",nocacheurl,true);
   xmlHttp_one.send(null);
}

// Start the refreshing process

window.onload = function startrefresh(){
   setTimeout('refreshdiv_timediv()',seconds*1000);
}
</script>

Затем я помещаю customer_needs_to_see_this.php в папку маршрутов в корневом каталоге www.Сценарий выше автоматически обновит div "ajax", а внутри ajax-div есть php include routes/user_needs_to_see_this.php.Элемент div с include находится в cart_sidebar.phtml

. Мне пришлось поместить файл за пределы файлов шаблонов magento, потому что я не мог включить, например, ../template/checkout/customer_needs_to_see_this.php.Включает работу, когда они находятся в той же папке, что и файл представления (phtml-файл), но в остальном, похоже, не работает.Также я не смог получить скрипт для извлечения user_needs_to_see_this.php из файлов шаблонов magento.

Сейчас он обновляется каждые 3 секунды, когда пользователь находится на странице custom.phtml.Я думаю, что это нормально, потому что он просто читает и делает куки, так что нет ничего тяжелого.Я мог бы изменить его на onclick в будущем.

Я получил код здесь .

Существует множество других подобных примеров, но приведенный выше пример, по-видимому, охватывает большинство основ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...