真的希望有人可以帮助我。
我想要实现的是显示一个小图标,显示购物车中当前产品的数量。例如。用户正在浏览产品页面"新鲜橙子",用户将2个新鲜橙子添加到购物车然后我想显示" 2"在产品页面的某个地方。这是我的代码:
select distinct a.name
from applications a
join jobhistory jh on a.id = jh.applicationid
join (
select applicationid, avg(endtime - starttime) avgtime
from jobhistory
where status = 'success'
group by applicationid
) t on a.id = t.applicationid
where jh.status = 'execution' and
@current_time - jh.starttime > t.avgtime
如果您刷新产品页面,它会正常工作,但由于我使用AJAX,因此每次用户添加产品时整个页面都不会刷新,我需要更新此数量字段随着更多此产品被添加到购物车中。
如果有人可以提供帮助我真的很感激,任何问题或者如果没有我写的都有意义请告诉我。
答案 0 :(得分:0)
我找到了一种解决方法,无需使用符合我需求的AJAX。
如果用户稍后返回产品页面,则显示购物车中当前产品的编号。如果为空,则不显示任何内容。
<div class="quantity-in-cart">
<span><?php foreach( WC()->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if( $_product->id == get_the_ID() ) { ?><?php echo $values['quantity'] ?>
<?php } } ?></span>
</div>
因此,如果购物车中没有当前产品,则该范围内不会显示任何内容。所以我添加了这个JS来添加0:
$span = $(".quantity-in-cart span");
if($span.text() == ""){
$span.text("0");
}
现在,在该范围内设置了默认值0,如果用户将更多当前产品添加到购物车,我们可以将范围中的数字添加到用户通过“添加到购物车”表单选择的数量编号中
$(".description .add-to-cart .add_to_cart_button").click(function() {
$('.quantity-in-cart span').text(parseInt($('.quantity-in-cart span').text()) + parseInt($('.quantity .qty').val()));
});
......我对此很满意。如果通过php在购物车中没有当前产品,那么在这个范围内获得0可能是更好的方法,但我对PHP不太好。只是想到我会分享我的解决方法,因为有人想找到类似的东西。我仍然有兴趣看看如何使用WooCommerce的AJAX功能正确地完成这项工作(可能有一些可以使用的迷你车代码,但我自己也不太了解它。)
答案 1 :(得分:-1)
我对你提到的购物车并不熟悉,但从概念上讲,我就是这样做的(我最初评论的选项之一):
<div class="quantity-in-cart">
<span data-qty="0" id="qty">0</span>
</div>
<input type="number" value="0" step="1" id="add_qty">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
var qty = $('#qty').data('qty');
$('#add_qty').on('click', function(event){
$.ajax({
url: "path/to/your/script.php",
}).done(function() {
$('#qty').attr('data-qty', $(this).val() );
$('#qty').html( $(this).val() );
});
});
</script>