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