2012-12-18 12 views
12

जोड़ने के बाद Woocommerce कार्ट अपडेट करें अजाक्स ठीक काम करता प्रतीत होता है लेकिन कार्ट सामग्री अपेक्षित के रूप में रीफ्रेश नहीं होगी। मैं "कार्ट में जोड़ें" बटन क्लिक करने के बाद कार्ट की सामग्री को ताज़ा करने की इच्छा रखता हूं। जैसा कि अब है, मुझे जोड़े गए उत्पादों को देखने के लिए पृष्ठ को मैन्युअल रूप से रीफ्रेश करना होगा।एक उत्पाद (jQuery)

मैं अपने woocommerce कार्ट में उत्पाद जोड़ने के लिए इस समारोह का उपयोग कर रहा:

 function addToCart(p_id) { 
      jQuery.ajax({ 
       type: 'POST', 
       url: '/wp/?post_type=product&add-to-cart='+p_id, 
       data: { 'product_id': p_id, 
       'quantity': amount}, 
       success: function(response, textStatus, jqXHR){ 
        console.log("Product added"); 
       }/*, 
       dataType: 'JSON'*/ 
      }); 
     } 

    jQuery('#addToCart').click(function(e) { 
     e.preventDefault(); 
     addToCart(prod_id["product_id"]); 
     return false; 
    }); 

यह केवल गाड़ी को ताज़ा करने के बाद एक उत्पाद जोड़ा गया है संभव है? -

+0

पर कोई अधिक जानकारी में jquery append और AJAX फ़ंक्शंस भी कोई चिंता नहीं - धन्यवाद! – user319940

+0

आपको उस उत्पाद के लिए एक नया HTML उत्पन्न करना होगा और इसे HTML में जोड़ना होगा। गाड़ी और कुछ अन्य चीजों में शायद कितनी वस्तुएं हैं, इसकी संख्या भी बदलें। एचटीएमएल की तलाश करने का प्रयास करें जो कार्ट उत्पन्न करता है और इसे जावास्क्रिप्ट में अनुवाद करता है। इसे या स्ट्रिंग कॉन्सट के माध्यम से, या जावास्क्रिप्ट टेम्पलेट्स के माध्यम से करें (जो बहुत अच्छे हैं)। – ioanb7

उत्तर

7

यह संभव है कि आप इस कोड का एक संशोधित संस्करण का उपयोग करने की आवश्यकता है:

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

संपादित करें - आप बुरा मत भविष्य 404 के

<a class="cart-customlocation" href="<?php echo wc_get_cart_url(); ?>" title="<?php _e('View your shopping cart'); ?>"><?php echo sprintf (_n('%d item', '%d items', WC()->cart->get_cart_contents_count()), WC()->cart->get_cart_contents_count()); ?> - <?php echo WC()->cart->get_cart_total(); ?></a> 

// Ensure cart contents update when products are added to the cart via AJAX (place the following in functions.php). 
// Used in conjunction with https://gist.github.com/DanielSantoro/1d0dc206e242239624eb71b2636ab148 
add_filter('add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment'); 

function woocommerce_header_add_to_cart_fragment($fragments) { 
    global $woocommerce; 

    ob_start(); 

    ?> 
    <a class="cart-customlocation" href="<?php echo $woocommerce->cart->get_cart_url(); ?>" title="<?php _e('View your shopping cart', 'woothemes'); ?>"><?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-customlocation'] = ob_get_clean(); 

    return $fragments; 

} 
+1

क्या आप संशोधन के बारे में थोड़ा और सटीक हो सकते हैं? उदाहरण के लिए, क्या मैं आइटम डेटा 'add_to_cart_fragments' के साथ प्राप्त कर सकता हूं? – Luc

+0

लिंक त्रुटि 404 – Reigel

+0

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

1

के मामले में अगर ajax अनुरोध "स्वचालित रूप से" पृष्ठ को अपने आप रीफ्रेश करता है? तो आप इस तरह कुछ कोशिश कर सकते हैं ... (untested)।

function addToCart(p_id) { 
      jQuery.ajax({ 
       type: 'POST', 
       url: '/wp/?post_type=product&add-to-cart='+p_id, 
       data: { 'product_id': p_id, 
       'quantity': amount}, 
       success: function(response, textStatus, jqXHR){ 
        location.reload(true); 
       }/*, 
       dataType: 'JSON'*/ 
      }); 
     } 
0

सबसे पहले देखें कि कार्ट में एचटीएमएल क्या है और आपको यह पूरा करने के लिए आवश्यक सभी जानकारी क्या है। उदाहरण आपके कार्ट कुछ इस तरह लग सकता है:

<div id="cart"> 
    <form action="checkout" method="POST" id="cart_checkout_form"> 
    <table id="cart_table"> 
     <tr> 
     <td> Product </td> 
     <td> Qty </td> 
     <td> Price </td> 
     </tr> 
     <tr> 
     <td> <input type="hidden" name="product_id" value="221321"/> Product 1</td> 
     <td> 2</td> 
     <td> 200 $</td> 
     </tr> 

    </table> 

    </form> 
</div> 

अब आप अपने कोड उत्पाद प्रतिबिंबित करने के लिए निम्न परिवर्तन शामिल करना चाहिए:

function addToCart(p_id) { 
     jQuery.ajax({ 
      type: 'POST', 
      url: '/wp/?post_type=product&add-to-cart='+p_id, 
      data: { 'product_id': p_id, 
      'quantity': amount}, 
      success: function(response, textStatus, jqXHR){ 
       /* response should contain details required for adding to cart 

        like price quantity name etc in the json response */ 

       var new_product_html = "<tr><td><input type='hidden' value='"+ response.product_id +"' name="product_id"/>"+ response.product_name +" </td><td>"+response.product_qty+"</td><td>"+ response.product_price +"</td></tr>"; 

       $("#cart_table").append(new_product_html); 

       console.log("Product added"); 

      }/*, 
      dataType: 'JSON'*/ 
     }); 
    } 

jQuery('#addToCart').click(function(e) { 
    e.preventDefault(); 
    addToCart(prod_id["product_id"]); 
    return false; 
}); 

यह उत्पाद कार्ट में जोड़ प्राप्त करने में प्रतिबिंबित करेगा। अगर आपको भ्रमित लगता है तो कृपया निम्न लिंक पढ़ें। Tutorial jquery.com

+0

धन्यवाद। यह पहले से ही woocommerce के भीतर एक समारोह होना चाहिए जो इसे संभालता है? जब मैं "कार्ट में जोड़ें" दबाता हूं- woocommerce द्वारा उत्पन्न बटन - उत्पाद को पृष्ठ रीलोड के बिना जोड़ा जाता है। मैं इस फ़ंक्शन की तलाश में हूं, इसलिए मैं इसे अपने स्वयं के woocommerce अनुकूलन के लिए स्वयं उपयोग कर सकता हूं, जो कि पहले से मौजूद कुछ को पुनर्निर्मित करने के बजाय कर सकता है। – estrar

संबंधित मुद्दे