2017-04-26 17 views
0

Prestashop v1.6.1.13 default-bootstrapのテーマ。属性の製品増分値を変更します。

私はproduct.jsこれに

// The button to increment the product value 
$(document).on('click', '.product_quantity_up', function(e){ 
    e.preventDefault(); 
    fieldName = $(this).data('field-qty'); 
    var currentVal = parseInt($('input[name='+fieldName+']').val()); 
    if (!allowBuyWhenOutOfStock && quantityAvailable > 0) 
     quantityAvailableT = quantityAvailable; 
    else 
     quantityAvailableT = 100000000; 
    if (!isNaN(currentVal) && currentVal < quantityAvailableT) 
     $('input[name='+fieldName+']').val(currentVal + 1).trigger('keyup'); 
    else 
     $('input[name='+fieldName+']').val(quantityAvailableT); 
    $('#quantity_wanted').change(); 
}); 

に変更する場合:

// The button to increment the product value 
$(document).on('click', '.product_quantity_up', function(e){ 
    e.preventDefault(); 
    fieldName = $(this).data('field-qty'); 
    var currentVal = parseInt($('input[name='+fieldName+']').val()); 
    if (!allowBuyWhenOutOfStock && quantityAvailable > 0) 
    quantityAvailableT = quantityAvailable; 
    else 
     quantityAvailableT = 100000000; 
    if (!isNaN(currentVal) && currentVal < quantityAvailableT) 
     $('input[name='+fieldName+']').val(currentVal + 2).trigger('keyup'); //this line changed 
    else 
     $('input[name='+fieldName+']').val(quantityAvailableT); 
    $('#quantity_wanted').change(); 
}); 

私はインクリメントボタンを押すたびに2 qauntityアップのための入力の値を変更することができますよ、しかし、私がコードminimalQuantityを入れたときのコードは、$('input[name='+fieldName+']').val(currentVal + minimalQuantity).trigger('keyup');のようになります。これは、製品のwitout属性でのみ有効です。製品に属性がありませんでしたが、製品にはminimalQuantityのようなものがありますが、属性がない場合は正しい値を返しますが、属性のある製品の場合は常に1です。

+0

ここで、** minimalQuantity **変数が宣言されていますか?そして、属性の有無に関わらず、どのように製品を定義しますか?製品属性の組み合わせで – Mils

+0

は 'product.jsのトピックからこのコードの下minimalQuantity''の値を設定するためのオプションである場合(typeof演算minimalQuantity = '不定' && minimalQuantity!) \t {\t \t checkMinimalQuantity()。 \t \t $(文書).on( 'keyUpイベント'、 '入力[名前=数量]'、関数(E){ \t \t \t checkMinimalQuantity(minimalQuantity); \t \t})。 \t} –

+0

私はまだ混乱しています。ここにjsfiddleやスニペットを追加できますか? – Mils

答えて

0

商品ページには、組み合わせに関するすべての情報を保存するグローバルなJS変数combinationsがあります。それはあなたがそこでそれを検索することができるようにDOMに組み込まれます。変数の

例:

var combinations = 
{ 
    "31": { 
    "attributes_values": { 
     "1": "S", 
     "3": "Yellow" 
    }, 
    "attributes": [ 
     1, 
     16 
    ], 
    "price": 0, 
    "specific_price": false, 
    "ecotax": 0, 
    "weight": 0, 
    "quantity": 300, 
    "reference": "", 
    "unit_impact": 0, 
    "minimal_quantity": "1", 
    "date_formatted": "", 
    "available_date": "", 
    "id_image": 16, 
    "list": "'1','16'" 
    }, 
    ... 
} 

ですから、上記のリストから選択した組み合わせのIDのオブジェクト内minimal_quantity変数を取得する必要があります。

// The button to increment the product value 
$(document).on('click', '.product_quantity_up', function(e){ 
    e.preventDefault(); 
    fieldName = $(this).data('field-qty'); 
    var curCombinationId = $('#idCombination').val(); 
    var minCombinationQty = minimalQuantity; // set default product minimal quantity 
    if (combinations != 'undefined') { // check if product has combinations 
     for (var combData in combinations) { 
      if (combData.idCombination == curCombinationId) { 
       minCombinationQty = parseInt(combData.minimal_quantity); 
       break; 
      } 
     } 
    } 
    var currentVal = parseInt($('input[name='+fieldName+']').val()); 
    if (!allowBuyWhenOutOfStock && quantityAvailable > 0) 
     quantityAvailableT = quantityAvailable; 
    else 
     quantityAvailableT = 100000000; 
    if (!isNaN(currentVal) && currentVal < quantityAvailableT) 
     $('input[name='+fieldName+']').val(currentVal + minCombinationQty).trigger('keyup'); 
    else 
     $('input[name='+fieldName+']').val(quantityAvailableT); 

    $('#quantity_wanted').change(); 
}); 
+0

product.js:console.log(組み合わせ)をソースコードで使用すると、この属性の組み合わせに対してminimal_quantityの正しい値が表示されますが、この製品とproduct.jsの正規の製品でどのように使用できるかわかりません。 –

+0

@AgnesTom私は答えを更新しました。 – TheDrot

+0

アップデートをありがとう、私はこのコードをチェックして、これは私のために働いていない。たぶん私はこのコードをproduct.jsの特定の場所に置かなければならなかったでしょうか? –

関連する問題