আমি যখন কার্টে ম্যাজেন্টো 2-তে কোনও পণ্য যুক্ত করি তখন পিন আপ মিনিকার্ট


15

আমি ম্যাজেন্টো ২.০. using ব্যবহার করছি এবং আমি যা করার চেষ্টা করছি তা হ'ল কার্টটি পপআপ করা (উপরের ডান কার্ট এজাজ মিনিকার্ট) যখন আমি এর সাথে কোনও পণ্য যুক্ত করি, মূলত এটি ট্রিগার করে। আমি কার্টের বোতামের ক্লাসগুলিতে আমার যোগ করার জন্য "শোকার্ট" শ্রেণিটি যুক্ত করার চেষ্টা করেছি, তবে আমি যদি এটি করি তবে বোতামটি কেবল কার্টটি খুলবে, এবং পণ্যটি আর যুক্ত করবে না ..

উত্তর:


36

এটি এই সাইটে আমার প্রথম উত্তর। আমি এই কাজটি গত দুই দিন ধরে করার চেষ্টা করে যাচ্ছি এবং অবশেষে আমি এটি কাজ করতে সক্ষম হয়েছি, তাই যদিও এটি ভাগ করে নেওয়া ভাল লাগবে।

প্রথমে আপনাকে একটি মডিউল তৈরি করতে হবে:

  • registration.php
  • ইত্যাদি / module.xml
  • দেখতে / ফ্রন্টএন্ড / লেআউট / default.xml
  • দেখতে / ফ্রন্টএন্ড / টেমপ্লেট / minicart_open.phtml
  • দৃশ্য / ফ্রন্টএন্ড / ওয়েব / JS / দৃশ্য / minicart_open.js

পদক্ষেপ 1. আপনার সাইটে একটি টেম্পলেট যুক্ত করা দরকার। এটি করার উপায় হ'ল ডিফল্ট.এক্সএমএল ব্যবহার করে

<referenceContainer name="content">
  <block class="Magento\Framework\View\Element\Template" name="minicart.autoopen" template="Company_ModuleName::minicart_open.phtml"/>
</referenceContainer>

পদক্ষেপ 2. তারপরে minicart_open.phtml এর ভিতরে আমাদের জিন্স ফাইল (উপাদান) এটি মিনিকার্টের প্যারেন্ট ডিভের সাথে সংযুক্ত করে কল করতে হবে। এই ক্ষেত্রে, [ডেটা-ব্লক = 'মিনিকার্ট']। আরও তথ্যের জন্য এই লিঙ্কটি দেখুন ।

<script type="text/x-magento-init">
{
     "[data-block='minicart']" : {
        "Company_ModuleName/js/view/minicart_open" : {}
     }
}
</script>

পদক্ষেপ 3. এবং পরিশেষে, minicart_open.js এর ভিতরে, যাদু কোড:

define(["jquery/ui","jquery"], function(Component, $){
    return function(config, element){
        var minicart = $(element);
        minicart.on('contentLoading', function () {
            minicart.on('contentUpdated', function () {
                minicart.find('[data-role="dropdownDialog"]').dropdownDialog("open");
            });
        });
    }
});

মূলত এই কোডটি ফাইলটির কার্যকারিতা প্রসারিত করে vendor/magento/module-checkout/view/frontend/web/js/view/minicart.jsএবং এটিতে বলা হয় যে একবার এজেএক্স কলটি শেষ হয়ে গেলে (বিষয়বস্তু আপ্টেটেড) হয়ে গেলে মাইনিকার্টটি খোলা উচিত।

এবং এটি হ'ল পিছনে অনেক তত্ত্ব সহ একটি সাধারণ কাজ। আশা করি এটা সাহায্য করবে.


এটি একটি মোহন মত কাজ করে। Tks!
মদিনা

একটি ভাল সংশোধন বলে মনে হচ্ছে, কেন এটি মডিউল হওয়া দরকার? আপনার থিমের সেই পরিবর্তনগুলি কি একই রকম প্রভাব ফেলবে না?
বেন ক্রুক

: লক্ষ্য করুন সমাধান কেবল কাজই যদি Ajax কার্ট ফাংশন অ্যাড জন্য ব্যবহার করা হয় হবে: @pinicio থেকে উপরে উত্তর ছাড়াও magento.stackexchange.com/questions/125681/...
Soeren

1
এটি কার্ট আপডেটে যেমন কাজ করে যখন আমরা পণ্য যুক্ত করি তখন এটি কাজ করে তবে যখন আমরা কার্ট থেকে আইটেমটি সরিয়ে ফেলি তখন এটি কাজ করা উচিত নয়। তবে এটি সেই সময়েও কাজ করছে।
রোনাক চৌহান

আমি যদি মিনি কার্ট থেকে কোনও আইটেম মুছে ফেলার চেষ্টা করি, আইটেমটি মুছে ফেলা হচ্ছে না ... তবে) আমি একবার পৃষ্ঠার রিফ্রেশের পরে মুছে ফেলা আইকনটিতে ক্লিক করি, মুছে ফেলা আইটেমটি পুনরায় মুছে ফেলা হবে
সুশীবাম

6

এটি কেবল minicart.js ফাইল পরিবর্তন করে করা যেতে পারে।

নেভিগেট করুন vendor/magento/Magento_Checkout/view/web/js/view/minicart.js

আরম্ভের অধীনে: ফাংশন, আপনি দেখতে পাবেন

$('[data-block="minicart"]').on('contentLoading', function (event) {

এই কোডটি দিয়ে ফাংশনটি প্রতিস্থাপন করুন।

$('[data-block="minicart"]').on('contentLoading', function (event) {
            addToCartCalls++;
            self.isLoading(true);
            $('[data-block="minicart"]').on('contentUpdated', function ()  {
                $('[data-block="minicart"]').find('[data-role="dropdownDialog"]').dropdownDialog("open");       
                setTimeout(function() {
                $('[data-block="minicart"]').find('[data-role="dropdownDialog"]').dropdownDialog("close");
            }, 4000);
            });
        });

আপনার প্রয়োজন অনুযায়ী সময়সীমা পরিবর্তন করতে পারেন।

কমান্ডটি চালিয়ে ফাইল আপলোড করুন এবং ক্যাশে পরিষ্কার করুন

php bin/magento cache:clean

চিয়ার্স!


1
আমি এটি চেষ্টা করেছি কিন্তু কাজ হয়নি, আমি ক্যাশে ফ্লাশ করেছিলাম
ইনসারৌরভ

আপনার থিমের অধীনে আপনার কাছে এই ফাইলের বিক্রেতা / ম্যাজেন্টো / ম্যাজেন্টো_চেকআউট / ভিউ / ওয়েব / জেএস / ভিউ / মিনিকার্ট.জেএস এর কোনও ওভাররাইড নেই তা নিশ্চিত করুন।
আজেন্দ্র পানওয়ার

1
আপনার সরাসরি ফাইলগুলি কখনই পরিবর্তন করা উচিত নয়। পরিবর্তে, আপনার থিম বা একটি কাস্টম মডিউল মধ্যে এটি পরিবর্তন করুন।
পিনিসিও

খুশি এটি আপনাকে সহায়তা করেছে :)
আজেন্দ্র পানওয়ার 1'18

1
এটি ম্যাজেন্টো ২.২.৩-তে একটি কবজির মতো কাজ করেছে। স্তুপ!
মদিনা

4

বিকল্প সমাধান: চেক vendor/magento/module-catalog/view/frontend/web/js/catalog-add-to-cart.jsলাইন: 100

$(document).trigger('ajax:addToCart', form.data().productSku);

আমরা একটি কাস্টম জেএস ফাইল যুক্ত করতে পারি:

<script type="text/x-magento-init">
{
    "*": {
        "Magento_Catalog/js/view/minicart-open": {}
    }
}

জেএসে:

$(document).on('ajax:addToCart', function () {#code here...}

2

কেবলমাত্র আপনি নিজের টেম্প্লেটিং কোডের নীচে minicart.phtml এ কোডটি ব্যবহার করতে পারেন। আমি এই কোডটি ব্যবহার করছি এবং এটি আরও ভালভাবে কাজ করছে। আপনি চেষ্টা করতে পারেন. ধন্যবাদ।

<script type="text/javascript">
    require(['jquery'], function ($) {
        $('.minicart-wrapper').on('contentLoading', function (event) {
            $('[data-block="minicart"]').on('contentUpdated', function () {
                $('[data-block="minicart"]').find('[data-role="dropdownDialog"]').dropdownDialog("open");
                setTimeout(function () {
                    $('[data-block="minicart"]').find('[data-role="dropdownDialog"]').dropdownDialog("close");
                }, 4000);
            });
        });
    });
</script>

ধন্যবাদ এটির কার্যকরী ... আমি ম্যাজেন্টো জেএস প্রবাহ শিখতে চাই। এটি কীভাবে কাজ করে দয়া করে কিছু লিঙ্ক ভাগ করুন
55840

1

এই উপরের উত্তরটি কাজ করে তবে শেষ বন্ধনীটি অনুপস্থিত:

            $('[data-block="minicart"]').on('contentLoading', function (event) {
            addToCartCalls++;
            self.isLoading(true);
                $('[data-block="minicart"]').on('contentUpdated', function ()  {
                    $('[data-block="minicart"]').find('[data-role="dropdownDialog"]').dropdownDialog("open");

                setTimeout(function() {
                $('[data-block="minicart"]').find('[data-role="dropdownDialog"]').dropdownDialog("close");
                }, 4000);
            });
        });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.