Я разрабатываю веб-магазин magento, где есть страница, где клиент может выбрать маршрут, где он / она хочет подобрать заказ. Выбор двоичный и на данный момент два разных набора кнопок, поэтому никаких флажков или переключателей. Сначала пользователь выбирает дату, а затем место.
Прямо сейчас я вызываю функцию javascript, которая загружает кнопку cookie на кнопку, затем перезагружает страницу и возвращает пользователя на привязку, чтобы пользователь не путался там, где был, когда делал первый выбор. Когда страница перезагружает боковую панель, содержит php, который считывает содержимое файлов cookie. Это не очень интуитивно, и я уверен, что есть намного лучший способ сделать это. Выбранный пользователем выбор должен отображаться в корзине боковой панели, которая является файлом .phtml. Просто простого «вы выбрали маршрут x» достаточно, прямо сейчас у меня есть эхо, но страница сначала перезагружается.
Короче говоря, когда пользователь делает выбор, боковая панель должна обновлять информацию о выборе, без перегрузки страницы и возвращения в позицию с помощью привязных ссылок. Уведомление должно быть предпочтительно на левой боковой панели. Я не думаю, что хочу использовать всплывающие окна или временные уведомления, но они могут быть дополнительной функцией.
Я уверен, что это очень простой вопрос, но по какой-то причине я не могу найти правильные ключевые слова, а затем сам пурпурный.
ОК. Это лучший из тех, что я придумал. Я все еще считаю, что это частично разрешено, и я думаю, что смогу получить больше помощи от сообщества 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>
Затем я помещаю client_needs_to_see_this.php в маршруты папок в корневом каталоге www. Сценарий выше автоматически обновит div «ajax», а внутри ajax-div есть php include routes/user_needs_to_see_this.php
. Div с include находится в cart_sidebar.phtml
Мне пришлось поместить файл за пределы файлов шаблонов ../template/checkout/customer_needs_to_see_this.php
потому что я не мог этого сделать, например, ../template/checkout/customer_needs_to_see_this.php
. Включает работу, когда они находятся в той же папке, что и файл вида (phtml-file), но в противном случае он, похоже, не работает. Кроме того, я не мог заставить скрипт извлекать user_needs_to_see_this.php
из файлов шаблонов user_needs_to_see_this.php
.
Сейчас он обновляется каждые 3 секунды, когда клиент находится на странице custom.phtml
. Я думаю, что это нормально, потому что он просто читал и делал куки, чтобы его не было чем-то тяжелым. Я могу изменить его в будущем.
Я получил код здесь .
Есть много других подобных примеров, но приведенный выше пример, похоже, охватывает большинство баз.