这里是一个多解决方案,您可以尝试
粘贴此代码在sidebar.phtml
<?php if ($this->helper('customer')->isLoggedIn()) {
$session = Mage::getSingleton('checkout/cart');
if ($session['quote']) {
$cart = Mage::getModel('checkout/cart')->getQuote()->getData();
$qtyCart = (int) $cart['items_qty'];
if ($qtyCart > 0) {
$updateAt = $session['quote']->getUpdatedAt(); // cart update date
$currentDate = strtotime($updateAt);
$futureDate = $currentDate + (60 * 20); //target date
$date1 = date("Y-m-d H:i:s");
$date1 = strtotime($date1); // current date
//$futureDate = date();
$dateFormat = "d F Y -- g:i a";
$targetDate = $futureDate; //Change the 25 to however many minutes you want to countdown
$actualDate = $date1;
$secondsDiff = $targetDate - $actualDate;
$remainingDay = floor($secondsDiff/60/60/24);
$remainingHour = floor(($secondsDiff - ($remainingDay * 60 * 60 * 24))/60/60);
$remainingMinutes = floor(($secondsDiff - ($remainingDay * 60 * 60 * 24) - ($remainingHour * 60 * 60))/60);
$remainingSeconds = floor(($secondsDiff - ($remainingDay * 60 * 60 * 24) - ($remainingHour * 60 * 60)) - ($remainingMinutes * 60));
$actualDateDisplay = date($dateFormat, $actualDate);
$targetDateDisplay = date($dateFormat, $targetDate);
?>
<script type="text/javascript">
var days = <?php echo $remainingDay; ?>
var hours = <?php echo $remainingHour; ?>
var minutes = <?php echo $remainingMinutes; ?>
var seconds = <?php echo $remainingSeconds; ?>
function setCountDown(statusfun)
{//alert(seconds);
var SD;
if(days >= 0 && minutes >= 0){
var dataReturn = jQuery.ajax({
type: "GET",
url: "<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB) . 'index.php/countdowncont/'; ?>",
async: true,
success: function(data){
var data = data.split("/");
day = data[0];
hours = data[1];
minutes = data[2];
seconds = data[3];
}
});
seconds--;
if (seconds < 0){
minutes--;
seconds = 59
}
if (minutes < 0){
hours--;
minutes = 59
}
if (hours < 0){
days--;
hours = 23
}
document.getElementById("remain").style.display = "block";
document.getElementById("remain").innerHTML = " Items reversed for <span> "+minutes+":"+seconds+"</span> minutes.";
SD=window.setTimeout("setCountDown()", 1000);
}else{
document.getElementById("remain").innerHTML = "";
seconds = "00"; window.clearTimeout(SD);
jQuery.ajax({
type: "GET",
url: "<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB) . 'index.php/countdown/'; ?>", // this the path of your controller
async: false,
success: function(html){
}
});
document.getElementById("remain").innerHTML = "";
//window.location = document.URL; // Add your redirect url*/
}
}
</script>
<?php if ($date1 < $futureDate && ($qtyCart > 0)) { ?>
<script type="text/javascript">
setCountDown();
</script>
<?php } else {
foreach(
Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection()
as $item){
Mage::getSingleton('checkout/cart')->removeItem($item->getId())->save();}
?>
<style>
#remain{display:none;}
</style>
<?php
}
}
}
} ?>
现在创建一个控制器,并将其分配给一个AJAX网址和过去的下面的代码到控制器
public function indexAction() {
$cartHelperAjax = Mage::helper('checkout/cart');
$cart = Mage::getModel('checkout/cart')->getQuote()->getData();
$qtyCart = (int)$cart['items_qty'];
if($qtyCart > 0){
$updateAt = $cartHelperAjax->getQuote()->getUpdatedAt(); // cart update date
$currentDate = strtotime($updateAt);
$futureDate = $currentDate+(60*20);//target date
$date1 = date("Y-m-d H:i:s");
$date1 = strtotime($date1); // current date
//$futureDate = date();
$dateFormat = "d F Y -- g:i a";
$targetDate = $futureDate;//Change the 25 to however many minutes you want to countdown
$actualDate = $date1;
$secondsDiff = $targetDate - $actualDate;
$remainingDay = floor($secondsDiff/60/60/24);
$remainingHour = floor(($secondsDiff-($remainingDay*60*60*24))/60/60);
$remainingMinutes = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))/60);
$remainingSeconds = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))-($remainingMinutes*60));
$actualDateDisplay = date($dateFormat,$actualDate);
$targetDateDisplay = date($dateFormat,$targetDate);
echo $total_remainTime = $remainingDay ."/".$remainingHour."/".$remainingMinutes."/".$remainingSeconds;
}
}
通过这些代码行可以创建一个倒数计时器。在特定时间之后,购物车中的所有物品都将被移除。从Admin > System > Configuration > Web > Session Cookie Management > Cookie Lifetime
这将只适用于未登录的用户。如何扩展以删除登录的篮子中的项目。 – user3107419