2015-06-29 27 views
1

我正在爲我的一個客戶開發Woocommerce主題。 對於此項目,我需要克隆購物車表單(在產品頁面上),以便將其顯示在頁面上的其他位置。 我管理符合這一段代碼做到這一點:如何在Woocommerce中爲變體選項強制「選定」屬性?

$(document).on('found_variation', 'form.cart', function(event, variation) { // found_variation // woocommerce_variation_select_change 
    $('.fixed-price-right').empty(); 
    $(this).clone().appendTo('.fixed-price-right').each(function() { 
     $('.product-fixi').scrollToFixed();    
    });  
}); 

首先,在每個變體的變化,我清空在其中的形式克隆將被顯示在div。 然後,我克隆它,並使容器div固定。

問題是我除了選擇的變化值之外都得到了一切。 實際上,默認的選定值有這個屬性:selected =「selected」。但是這個屬性不適用於其他選項。 你可以在這裏看到一個生動的例子:http://www.pro4mance.com.au/product/produrance-energy-gels-2/

如果我從克隆表單提交,產品被添加,但沒有選項。

奇怪的是,如果我手動添加(從Web控制檯)這個attr在克隆形式的正確選項,然後添加產品到購物車,產品添加了所有的好選擇。

我真的不知道如何在每次更改時強制添加selected =「selected」。有人可以幫我管理嗎?

謝謝大家!

+0

1)推薦這可以在http://wordpress.stackexchange.com/公佈2)爲什麼jQuery的克隆,爲什麼不使用循環再創建數據第二次? – zipzit

+0

感謝您的第一次推薦@zipzit。我會在那裏添加問題。關於第二點,「再次使用循環」是什麼意思?你建議直接通過PHP添加它? –

回答

1

大家誰需要強制上Woocommerce選項變量「選擇」屬性的加入,這裏是我做到了(使用jQuery):

$('form.cart').on('change', '.variations select', function(event) { 
    $val=$(this).val(); 
    $(this).children('option').each(function(){ 
     $childVal = $(this).val(); 
     if ($childVal == $val) { 
      $(this).attr('selected', 'selected'); 
     } else { 
      $(this).removeAttr('selected'); 
     } 
    }); 
}); 

隨意提高它(這也許不是最好的辦法)。

0

我想你將不得不看看WooCommerce templates文件夾中的文件cart.php。使用它來創建您自己的自定義購物車文件。只需再次運行該循環即可直接從服務器獲得您想要的內容。 ref:WordPress -- "the Loop"您感興趣的實際代碼行是foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {對於WooCommerce購物車,這是「循環」的頂部。再次加入該行,用自己的定製相匹配的購物車中的內容您想要的第二個副本...

我建議你離開的jQuery出來吧......

很顯然你不想直接WooCommerce包內追加(在將來的更新的情況下)...(更新在這裏!)

哇,這似乎很容易...

WooCommerce(幾乎所有加載項)提供了一個模板系統。 這意味着WooCommerce頁面上顯示的每個元素都可以覆蓋 。

該系統的好處是,你可以修改 元素的顯示,而無需編輯WooCommerce核心文件(這是絕對 不推薦,如果你這樣做,你的所有的修改將在 連丟WooCommerce更新,所以只是不這樣做)。位於woocommerce/templates文件夾中的所有模板均爲 。正如我們的 文檔中所解釋的,您所要做的就是在主題目錄內創建woocommerce文件夾 ,並在此文件夾中複製您想要覆蓋的文件 。請注意,我們強烈建議您使用 子主題,以免在主題 更新期間丟失任何修改。

+0

感謝您的推薦@zipzit。我已經與WC tpls合作。實際上,也許我不知道該怎麼做,或者沒有您的主級別,但是,我使用jQuery爲了在更新一個或另一個時具有相同的「添加到購物車」內容/功能(在變量)。我試圖走你的路。 「添加到購物車」顯示效果良好,但不會根據我選擇的可變選項進行更新。你認爲它可以與你的解決方案一起工作嗎?例如,我添加了「global $ product; do_action('woocommerce_'。$ product-> product_type。'_add_to_cart');'in content-single-product.php –

相關問題