التحديث التلقائي لكمية عربة التسوق عند تغيير الكمية

magento.stackexchange https://magento.stackexchange.com//questions/55707

سؤال

في عربة التسوق الافتراضية في Magento، عندما يقوم العميل بتحرير الكمية، فإنه يحتاج إلى الضغط على الزر لتحديث الكمية.

هل هناك طريقة تقوم بها سلة التسوق بتحديث الكمية تلقائيًا عندما يقوم المستخدم بإدخال رقم آخر في حقل الكمية؟

هل كانت مفيدة؟

المحلول

قم أولاً بتحرير قالب سلة التسوق /app/design/frontend/{package}/{theme}/template/checkout/cart.phtml وأضف معرفًا إلى عنصر النموذج لتسهيل الوصول إليه.لنفترض أنك أضفت 'id='cart-form''؛

الآن قم بتحرير القوالب التي تعرض عناصر سلة التسوق:

  • app/design/frontend/{package}/{theme}/template/checkout/cart/item/default.phtml
  • app/design/frontend/{package}/{theme}/template/downloadable/checkout/cart/item/default.phtml

وعلى <input> العنصر بالاسم cart[<?php echo $_item->getId() ?>][qty] اضف هذا:

onchange="$('cart-form').submit()"

لكنني لا أوصي بفعل هذا.إنه أمر مزعج حقًا للمستخدمين.(على الأقل بالنسبة لي).

نصائح أخرى

على افتراض موقع الويب الخاص بك لديه مسج المدرجة في الصراع الوضع ، وإليك طريقة القيام بذلك بشكل غير متزامن (أقل مزعج!).

jQuery(document).ready(function(){
jQuery('#shopping-cart-table')
    .on(
        'change',
        'input[name$="[qty]"]',
        function(){
            var form = jQuery(jQuery(this).closest('form'));

            // we'll extract the action and method attributes out of the form

            // kick off an ajax request using the form's action and method,
            // with the form data as payload
            jQuery.ajax({
                url: form.attr('action'),
                method: form.attr('method'),
                data: form.serializeArray()
            });
        }
    );
});

وأود أن أشير إلى أن هذا يجعل الافتراضات التالية:

  • عربة التسوق الخاصة بك يعيش داخل عنصر مع معرف التسوق-السلة-الطاولة
  • المدخلات الخاصة بك المجالات الكمية اسم السمة التي تنتهي مع [الكمية]

ينبغي أن يكون من السهل ضبط محددات في قانون خطوط 2 و 5 على التوالي لتتناسب مع الظروف الخاصة بك.

تحرير هذين الملفين

app/design/frontend/{package}/{theme}/template/checkout/cart/item/default.phtml

app/design/frontend/{package}/{theme}/template/downloadable/checkout/cart/item/default.phtml

وعلى العنصر بالاسم cart[<?php echo $_item->getId() ?>][qty] اضف هذا:

onchange="this.form.submit()"

إذا كان إصدار jQuery الخاص بك قديمًا، فلن تنجح.لقد وجدت طريقة وهي كالتالي، اتبع تعليمات صديقنا ماريوس لإدراجها

/app/design/frontend/{package}/{theme}/template/checkout/cart.phtml وأضف معرفًا إلى عنصر النموذج لتسهيل الوصول إليه.لنفترض أنك أضفت id="cart-form"

الآن افتح الملف

app/design/frontend/{package}/{theme}/template/downloadable/checkout/cart/item/default.phtml

وانتقل إلى نهاية الملف وستجد جافا سكريبت الذي يقوم بزيادة الكمية وإنقاصها.ستبدو الوظيفة كالتالي:

function plusQty(itemId){
    qty = $('qty'+itemId).value;
    qty = parseInt(qty);        
    qty++;
    $('qty'+itemId).value = qty;
}

function minusQty(itemId){
    qty = $('qty'+itemId).value;
    qty = parseInt(qty);        
    if(qty>0){
        qty--;
        $('qty'+itemId).value = qty;
    }
}

التغيير لهذا:

function plusQty(itemId){
    qty = $('qty'+itemId).value;
    qty = parseInt(qty);        
    qty++;
    $('qty'+itemId).value = qty;
    document.getElementById("cart-form").submit();  
}

function minusQty(itemId){
    qty = $('qty'+itemId).value;
    qty = parseInt(qty);

    if(qty>0){
        qty--;
        $('qty'+itemId).value = qty;
         document.getElementById("cart-form").submit();   
    }
}

في حالة عدم تحميل jQuery (حتى الآن)، يمكنك أيضًا العثور على ملف <input>عنصر (أو في حالتي أ <select> عنصر منذ أن قمت بإنشاء حقل منسدل لتحديد المبلغ) بالاسم name="cart[<?php echo $_item->getId() ?>][qty]" وأضف هذا:

onchange="this.form.submit()"

ملف phtml الذي عليك تعديله موجود هنا:

app/design/frontend/{package}/{theme}/template/checkout/cart/item/default.phtml
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top