2014-01-02 4 views
2

Я искал ответ на этот вопрос, но не смог его найти.Обновление значка корзины покупок woocommerce динамически с помощью ajax

В моем магазине woocommerce я хочу значок корзины в верхней части сайта. Когда клиент кладет что-то в корзину, они хотят поменять этот значок на другой - этот значок («не пустой») останется до тех пор, пока тележка не будет пуста.

Что мне нужно - это вызов if-else типа PHP, в котором говорится: «Если корзина пуста, отобразите значок A, иначе отобразите значок B». Если бы кто-нибудь мог пролить свет на это, я был бы очень благодарен!

Я могу обновить телеги текст динамически после этого WooCommerce урока

http://docs.woothemes.com/document/show-cart-contents-total/

В моей странице

<?php global $woocommerce; 

if($woocommerce->cart->get_cart_total()=='0') { ?> 
<img src="<?php echo get_stylesheet_directory_uri(); ?>/images/empty_cart.png" alt="" width="30" height="30"> 
<?php }else{ ?> 
<img src="<?php echo get_stylesheet_directory_uri(); ?>/images/full_cart.png" alt="" width="30" height="30"> 
    <?php } ?> 


<a class="cart-contents" href="<?php echo $woocommerce->cart->get_cart_url(); ?>" >Your Cart : <?php echo sprintf(_n('%d item', '%d items', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count);?> - <?php echo $woocommerce->cart->get_cart_total(); ?></a> 

В functions.php

add_filter('add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment'); 



function woocommerce_header_add_to_cart_fragment($fragments) { 

global $woocommerce; 

ob_start(); 


if($woocommerce->cart->get_cart_total()=='0') { ?> 

<img src="<?php echo get_stylesheet_directory_uri(); ?>/images/empty_cart.png" alt="" width="30" height="30"> 
<?php 
    }else{ ?> 
    <img src="<?php echo get_stylesheet_directory_uri(); ?>/images/full_cart.png" alt="" width="30" height="30"> 
     <?php } 
?> 

<a class="cart-contents" href="<?php echo $woocommerce->cart->get_cart_url(); ?>" >Your Cart : <?php echo sprintf(_n('%d item', '%d items', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count);?> - <?php echo $woocommerce->cart->get_cart_total(); ?></a> 

<?php 

$fragments['a.cart-contents'] = ob_get_clean(); 

return $fragments; 

} 

В настоящее время он показывает оба изображения независимо от того, что находится в корзине. Вы можете увидеть реализацию выше на http://fungass.com/testing/shop/uncategorized/abc/

ответ

1

Наконец решил это, как это,

<?php global $woocommerce; ?> 

    <a href="<?php echo $woocommerce->cart->get_cart_url(); ?>" ><?php if ($woocommerce->cart->cart_contents_count == 0){ 
     printf('<img src="%s/images/empty.png" alt="empty" height="25" width="25">', get_stylesheet_directory_uri()); 
    }else{ 
     printf('<img src="%s/images/full.png" alt="full" height="25" width="25">', get_stylesheet_directory_uri()); 
     } 
    ?> </a> 

<a class="cart-contents" href="<?php echo $woocommerce->cart->get_cart_url(); ?>" > 
Your Cart : <?php echo sprintf(_n('%d item', '%d items', $woocommerce->cart->cart_contents_count, 'woothemes'), $woocommerce->cart->cart_contents_count);?> - <?php echo $woocommerce->cart->get_cart_total(); ?></a> 
1

Я бы на самом деле рекомендуется использовать куки & JavaScript, чтобы справиться с этой функциональностью для дополнительным преимуществом позволяет кэширования плагинов служить статических страниц на страницах, не WooCommerce но все еще есть некоторые динамические фрагменты на странице (например, итоговые данные корзины или просто значок населенной корзины).

На PHP стороны вещей, на init, проверьте корзину сумм и установить значение куков ...

// this should only ever fire on non-cached pages (so it SHOULD fire 
// whenever we add to cart/update cart/etc 
function update_cart_total_cookie() 
{ 
    global $woocommerce; 
    $cart_total = $woocommerce->cart->cart_contents_count; 
    setcookie('woocommerce_cart_total', $cart_total, 0, '/'); 
} 
add_action('init', 'update_cart_total_cookie'); 

На JavaScript стороны вещей, исследовать печенье, а затем изменить значок ...

// use the custom woocommerce cookie to determine if the empty cart icon should show in the header or the full cart icon should show 
// *NOTE: I'm using the jQuery cookie plugin for convenience https://github.com/carhartl/jquery-cookie 
var cartCount = $.cookie("woocommerce_cart_total"); 
if (typeof(cartCount) !== "undefined" && parseInt(cartCount, 10) > 0) { 
    $(".full-cart-icon").show(); 
    $(".empty-cart-icon").hide(); 

    // optionally you can even use the cart total count if you want to show "(#)" after the icon 
    // $(".either-cart-icon span").html("(" + cartCount + ")"); 
} 
else { 
    $(".full-cart-icon").hide(); 
    $(".empty-cart-icon").show(); 
} 

Надеюсь, это поможет! Повеселись!

+0

Это было очень полезно. благодаря – harryg

Смежные вопросы