2012-11-30 16 views
2
<?php 

    switch ($product->product_type) { 
     case "variable" : 
      $link = apply_filters('variable_add_to_cart_url', get_permalink($product->id)); 
      $label = apply_filters('variable_add_to_cart_text', __('Select options', 'woocommerce')); 
     break; 
     case "grouped" : 
      $link = apply_filters('grouped_add_to_cart_url', get_permalink($product->id)); 
      $label = apply_filters('grouped_add_to_cart_text', __('View options', 'woocommerce')); 
     break; 
     case "external" : 
      $link = apply_filters('external_add_to_cart_url', get_permalink($product->id)); 
      $label = apply_filters('external_add_to_cart_text', __('Read More', 'woocommerce')); 
     break; 
     default : 
      $link = apply_filters('add_to_cart_url', esc_url($product->add_to_cart_url())); 
      $label = apply_filters('add_to_cart_text', __('Add to cart', 'woocommerce')); 
     break; 
    } 

    printf('<a href="%s" rel="nofollow" data-product_id="%s" class="add_to_cart_button button product_type_%s">%s</a>', $link, $product->id, $product->product_type, $label); 

?> 

我試圖讓變化顯示在循環中,使客戶可以添加的變型產品,從店鋪頁面的購物車裏面顯示的變化(請參見下面的截圖)...Woocommerce - 環

http://cl.ly/image/42401k0X0X2I

我知道我需要包括功能 -

get_available_variations(); 

我敢肯定,這已經返回一個數組,它只是把該數組成一個選擇下拉列表+列出變體(S,M,L,XL),並有一個鏈接將該變體添加到籃子中。

乾杯!

+0

頂部的代碼來自哪裏? – obeattie

+0

woocommerce/templates/loop/add-to-cart.php –

回答

3

單後頁面的變化下拉模板文件位於: woocommerce \模板\單品\添加到購物車\ variable.php

這就需要下面的腳本來傳遞產品的可變信息:

<script type="text/javascript"> 
var product_variations_<?php echo $post->ID; ?> = <?php echo json_encode($available_variations) ?>; 
</script> 

以及下面的隱藏字段:

<input type="hidden" name="variation_id" value="" /> - where the value is the variation ID 

我希望這是一個開始別人可以幫助建立根據。

+0

我將上面的代碼放在我的'loop/price.php'文件中。但'$ available_variations'輸出'null'在我身邊。還有什麼我忘了包括? – RZKY

3

我在嘗試解決同一問題時找到了您的帖子。我終於找到了......

function woocommerce_variable_add_to_cart() { 
    global $product; 

    // Enqueue variation scripts 
    wp_enqueue_script('wc-add-to-cart-variation'); 

    // Load the template 
    woocommerce_get_template('single-product/add-to-cart/variable.php', array(
      'available_variations' => $product->get_available_variations(), 
      'attributes'   => $product->get_variation_attributes(), 
      'selected_attributes' => $product->get_variation_default_attributes() 
     )); 
} 
} 

woocommerce-template.php

這在循環對我的作品/添加到cart.php

switch ($product->product_type) { 
     case "variable" : 
      $link = apply_filters('variable_add_to_cart_url', get_permalink($product->id)); 
      $label = woocommerce_variable_add_to_cart(); 
     break; 

讓我知道,如果這有助於:)

2

我發現Remi Corson's blog一個簡單的方法來做到這一點。
更改以下列車按鈕的href值:

http://example.com/cart/?add-to-cart=[PRODUCT_ID]&variation_id=[VARIATION_ID]&attribute_pa_[ATTRIBUTE_SLUG]=[ATTRIBUTE_SLUG_VALUE] 

實施例:

http://example.com/cart/?add-to-cart=123&variation_id=456&attribute_pa_colour=black 

隨着get_available_variations();功能是很容易得到的變化值。對於產品ID,您可以使用get_the_ID();函數。

+0

何時添加'$ id = get_the_ID(); $ variation = get_available_variations($ id);'我的自定義單頁面模板(在我創建的woocommece/.....的主題文件夾內)正在發生致命錯誤:調用未定義的函數get_available_variations()。任何想法@Guilherme馬可尼? –