পরিমাণ পরিবর্তন করার সময় অটো আপডেট কার্টের পরিমাণ


12

ম্যাজেন্টোর ডিফল্ট কার্টে, যখন গ্রাহক পরিমাণটি সম্পাদনা করেন, তখন পরিমাণটি আপডেট করার জন্য তাকে বাটন টিপতে হবে।

ব্যবহারকারীর পরিমাণ ক্ষেত্রের মধ্যে অন্য নম্বর প্রবেশ করানোর পরে কার্টটি স্বয়ংক্রিয়ভাবে পরিমাণ আপডেট করে এমন কোনও উপায় আছে কি?

উত্তর:


14

প্রথমে কার্টের টেম্পলেটটি সম্পাদনা করুন /app/design/frontend/{package}/{theme}/template/checkout/cart.phtmlএবং সহজেই অ্যাক্সেসের জন্য ফর্ম উপাদানটিতে একটি আইডি যুক্ত করুন। ধরা যাক আপনি 'আইডি = "কার্ট-ফর্ম"' যুক্ত করেছেন;

এখন টেমপ্লেটগুলি সম্পাদনা করুন যা কার্ট আইটেমগুলি রেন্ডার করে:

  • অ্যাপ্লিকেশন / ডিজাইন / ফ্রন্টএন্ড / {প্যাকেজ} / {থিম} /template/checkout/cart/item/default.phtml
  • অ্যাপ্লিকেশন / ডিজাইন / ফ্রন্টএন্ড / {প্যাকেজ} / {থিম} /template/downloadable/checkout/cart/item/default.phtml

এবং <input>নামের সাথে উপাদানটিতে এটি cart[<?php echo $_item->getId() ?>][qty]যুক্ত করুন:

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

তবে আমি এটি করার পরামর্শ দিচ্ছি না। এটি ব্যবহারকারীদের জন্য সত্যিই বিরক্তিকর। (অন্তত আমার জন্য).


6
অ্যানোয়্যার ইউজার ?! কোনও সমস্যা নেই, তবুও আমরা এটি করি: ডি
ফ্যাবিয়ান ব্ল্যাচস্মিড্ট

5
@FabianBlechschmidt। কেন না? এটি বিকাশকালে আমরা বিরক্ত হই, ব্যবহারকারী এটি ব্যবহারের সময় বিরক্ত হন। সমঝোতা মানে এটাই। সবাই হেরে যায়। :)
মারিয়াস

আপনি দুর্দান্ত মারিয়াস আমি আজাক্স ব্যবহার করে এটি কীভাবে করতে পারি?
নবীনবস

6

ধরে নিই যে আপনার সাইটের jQuery কোনও বিরোধ-মোডে অন্তর্ভুক্ত রয়েছে, এখানে এটি অ্যাসিঙ্ক্রোনালিভাবে করার একটি উপায় রয়েছে (অনেক কম বিরক্তিকর!)।

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()
            });
        }
    );
});

আমার উল্লেখ করা উচিত যে এটি নিম্নলিখিত অনুমানগুলি করে:

  • আপনার শপিং কার্ট শপিং-কার্ট-টেবিলের আইডি সহ একটি উপাদানের মধ্যে থাকে
  • পরিমাণের জন্য আপনার ইনপুট ক্ষেত্রে একটি নাম বৈশিষ্ট্য রয়েছে যা [qty] দিয়ে শেষ হয়

আপনার পরিস্থিতি মেলাতে যথাক্রমে 2 এবং 5 লাইনে কোডে নির্বাচকদের সামঞ্জস্য করা সহজ হওয়া উচিত।


হাই জেঠা আমি এটি চেষ্টা করে দেখছি তবে এটি চেকআউট / কার্ট / আপডেটপোস্ট / 302 দেখায় 1.1s পাওয়া গেছে কেন এটি এমন দেখাচ্ছে কেন?
নবীনবস

প্যারামিটারগুলি হ'ল এই কার্ট [১৩7] [কিটি] ১ টি কার্ট [১৩৯] [কিটি] ২ ফর্ম_কি zA1lLphVHPsEu4ux এটি ব্যবহার করে কীভাবে পোস্ট ক্রিয়াকলাপ আপডেট করতে আমি এটি পোস্ট করতে পারি
নবীনবস

আপনার গাড়ীটি আপডেট পরিমাণগুলি দেখায়?
জেঠা চান

এটি আসলে কিছু ফেরত বোঝানো নয়; আরও আপনি যখন এইভাবে এটি করেন তখন আপনি রিটার্ন মান সম্পর্কে যত্ন নিয়ে বোঝাতে চান না। যাচাই করার বিষয়গুলি: - আপনার ফর্মটি সাধারণত জমা দেওয়ার সময় কাজ করে, যেমন এজেএক্স ছাড়াই? - যখন এজেএক্স ব্যবহার করে মানগুলি পরিবর্তন করা হয়, তখন কার্টের মানগুলি (অর্থাত্ অন্য ব্রাউজার উইন্ডোটি খুলুন) কি পরিবর্তন হয়?
জেঠা চান


0

এই দুটি ফাইল সম্পাদনা করুন

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()"

0

আপনার 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();   
    }
}

0

আপনার কাছে jQuery বোঝা না থাকলে (এখনও), আপনি নামটি সহ <input> উপাদানটি (বা আমার ক্ষেত্রে কোনও <select>উপাদান একটি ড্রপডাউন ফিল্ড তৈরি করার পরে, নামটি খুঁজে পেতে) এবং এটি যুক্ত করতে পারেন name="cart[<?php echo $_item->getId() ?>][qty]":

onchange="this.form.submit()"

আপনার সম্পাদনা করতে হবে যে পিএইচটিএমএল ফাইলটি এখানে অবস্থিত:

app/design/frontend/{package}/{theme}/template/checkout/cart/item/default.phtml
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.