Magento2: আমি কীভাবে মূল জেএস মডিউল দাম-বাক্স.জেএসকে ওভাররাইড করতে পারি


15

আমি প্রসারিত করতে প্রয়োজন Magento_Catalog/js/price-box.js। আমি 'মিক্সিন' বৈশিষ্ট্যটি ব্যবহার করেছি, তবে এটি কাজ করছে না price-box.js

requirejs-config.js:

var config = {
    config: {
        mixins: {
            'Magento_Catalog/js/price-box': {
                'My_Module/js/price-box/pluggin': true
            }
        }
    }
};

My_Module/view/frontend/web/js/price-box/pluggin.js

define(function () {
    'use strict';

    return function (target) { 
        // modify target
        var reloadPrice = target.reloadPrice;
        target.reloadPrice = function() {
           cosole.log("hello");
        };
        return target;
    };
});

যোগেশ, এ সম্পর্কে আরও কিছু তথ্য দিন।
কোড্রেন টেকনোলবস প্রাইভেট লিমিটেড

উত্তর:


12
  1. প্রাইসবক্স জেএস ফাইলটি আপনার কাস্টম মডিউলে requirejs-config.jsএকই নামের সাথে উল্লেখ করুন যার দ্বারা এটি ইতিমধ্যে মূল মডিউলগুলিতে ঘোষণা করেছে। আমাদের ক্ষেত্রে এটি priceBoxনীচের মতো। আপনার মডিউলগুলি requirejs-config.jsএমন কিছু হবে

    var config = {
        map: {
             '*': {
                    priceBox:'namespace_modulename/js/custompricebox',
             }
        }
    };
  2. এখন, custompricebox.jsউপরে উল্লিখিত পথে ফাইলটি তৈরি করুন । আমি ধরে নিচ্ছি আপনি reloadPriceদাম-বাক্সে পদ্ধতিটি প্রসারিত করতে চান । আপনার custompricebox.jsনীচের মত হবে।

    define(
        [
            'jquery',
            'Magento_Catalog/js/price-utils',
            'underscore',
            'mage/template',
            'mage/priceBox',
            'jquery/ui'
        ],
        function ($, utils, _, mageTemplate) {
    
            'use strict';
    
            $.widget('yournamespace.custompriceBox', $.mage.priceBox, {
                /**
                 * Render price unit block.
                 */
                reloadPrice: function reDrawPrices() {
    
                    var priceFormat = (this.options.priceConfig && this.options.priceConfig.priceFormat) || {},
                        priceTemplate = mageTemplate(this.options.priceTemplate);
    
                    _.each(this.cache.displayPrices, function (price, priceCode) {
                        price.final = _.reduce(price.adjustments, function(memo, amount) {
                            return memo + amount;
                        }, price.amount);
    
                        // you can put your custom code here. 
    
                        price.formatted = utils.formatPrice(price.final, priceFormat);
    
                        $('[data-price-type="' + priceCode + '"]', this.element).html(priceTemplate({data: price}));
                    }, this);
                },
    
    
            });
    
            return $.yournamespace.custompriceBox;
        }
    );
  3. এই কোডটি পরীক্ষা করা হয় না দয়া করে নোট করুন। কিছু সিনটেক্স ত্রুটি হতে পারে। আপনার যদি এই বিষয়ে আরও সহায়তার প্রয়োজন হয় তবে আমাকে জানান।


হাই যজ্ঞেশ, আমরা কি মিক্সিনের মাধ্যমে এটি অর্জন করতে পারি? এটিকে ওভাররাইড করার পরিবর্তে, আমরা কি এটিও বাড়িয়ে দিতে পারি?
প্রফুল রাজপুত

@ প্রফুলরাজজপুট, আমি এখনও মিক্সিন ব্যবহার করি না, এটি করার পরে আমি অবশ্যই আপনাকে এটি আপডেট করব।
কোড্রেন টেকনোলবস প্রাইভেট লিমিটেড

2
একরকম এটি আমার পক্ষে কাজ করে না (ভার্সন ২.১.২)। এছাড়াও mage / প্রাইসবক্স আমাকে কিছু স্ক্রিপ্ট ত্রুটি দেয়।
ট্রিটোফ্লাই 4:58

1
কেউ কি মিক্সিনের মাধ্যমে এটি পুনরায় লিখতে সফল হয়েছিল?
পোল রাওয়ালিতের
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.