মিক্স ম্যাগ্যান্টো ২.১.১ এর সাথে উইজেট ফাংশনটি কীভাবে পুনর্লিখন করবেন


17

আমাদের আছে swatch-renderer.js

এই ফাইলটিতে কিছু উইজেট রয়েছে।

....
    $.widget('mage.SwatchRenderer', {
....

    /**
     * @private
     */
    _init: function () {
        if (this.options.jsonConfig !== '' && this.options.jsonSwatchConfig !== '') {
            this._sortAttributes();
            this._RenderControls();
        } else {
            console.log('SwatchRenderer: No input data received');
        }
    },

    /**
     * @private
     */
    _sortAttributes: function () {
        this.options.jsonConfig.attributes = _.sortBy(this.options.jsonConfig.attributes, function (attribute) {
            return attribute.position;
        });
    },

আমি এর কয়েকটি ফাংশন আবার লিখতে চাই।

এটি কীভাবে সঠিক পদ্ধতিতে করা যায়?

ম্যাজেন্টো লাইব্রেরিতে ব্যাখ্যাগুলি এখন আর আসল নয়, তারা এমন ক্লাসগুলির সাথে লিঙ্কযুক্ত যা অন্য পদ্ধতি ব্যবহার করছে (আমি স্থান-অর্ডার.জেএস / স্থান-ক্রম-আদেশ-মিশিন.জেএস সম্পর্কে বলছি)। এবং বর্ণিত উদাহরণগুলি কোনওভাবে কীভাবে উইজেট ফাংশনগুলি আবার লিখতে হয় তা ব্যাখ্যা করে না।

উত্তর:


38

requirejs-config.js

var config = {
    config: {
        mixins: {
            'Magento_Swatches/js/swatch-renderer': {
                'path/to/your/mixin': true
            }
        }
    }
};

পাথ / / আপনার / mixin.js

define([
    'jquery'
], function ($) {
    'use strict';

    return function (widget) {

        $.widget('mage.SwatchRenderer', widget, {
            _Rebuild: function () {
                console.log('Hello from rebuild', arguments);
                return this._super();
            }
        });

        return $.mage.SwatchRenderer;
    }
});

3

সম্পাদনা করুন: আমার উত্তরটি মিক্সিন ব্যবহার করছে না। আমার জানা মতে, মিশ্রণগুলি কেবল পদ্ধতিগুলি পুনর্লিখন এবং বৈশিষ্ট্যের জন্য কাজ করে। আপনার ক্ষেত্রে, এটি কোনও পদ্ধতির বাইরে সরাসরি খাঁটি জেএস বলা হচ্ছে।

আপনি এটি একটি মডিউল মাধ্যমে করতে পারেন।

ইন Vendor/Module/view/frontend/requirejs-config.jsআপনি নিম্নলিখিত যোগ করতে পারেন:

var config = {
    map: {
        '*': {
            'Magento_Swatches/js/swatch-renderer':'Vendor_Module/js/swatch-renderer'
        }
    }
};

তারপরে আপনি Vendor/Module/view/frontend/web/js/swatch-renderer.jsআসল swatch-renderer.jsফাইলটি অনুলিপি করে ফাইলটি তৈরি করতে পারেন এবং আপনি যা করতে চান তার উপর ভিত্তি করে এর সামগ্রীটি সংশোধন করতে পারেন।


রাফেল , দীর্ঘ সময় সাড়া না দেওয়ার জন্য দুঃখিত। কোন ফ্রি সময় ছিল না। অন্য কথায় উইজেট পদ্ধতি পুনরায় লেখার কোন সঠিক উপায় নেই? শুধুমাত্র সম্পূর্ণ সম্পূর্ণ পুনর্লিখন? আমি বোঝাতে চাইছি যদি ম্যাজেন্টো বিদ্যমান ফাইল আপডেট করে থাকে - আমাদের আমাদের পুনর্লিখনটি আপডেট করতে হবে।
zhartaunik

@ ঝারটৌনিক মিক্সিন ব্যবহার করে উইজেট পদ্ধতি পুনর্লিখন করা সম্পূর্ণ সম্ভব। আপনার ক্ষেত্রে সমস্যাটি হ'ল সোয়াচ-রেন্ডারারের ফাইলটির কোনও পদ্ধতি নেই, এটি একটি একক স্ক্রিপ্ট। এ কারণে আমরা মিক্সিন ব্যবহার করতে পারি না এবং এভাবে সম্পূর্ণ পুনর্লিখন করতে হয়। আফাইক এটি করার একমাত্র উপায়
আফাইক রাফেল ডিজিটাল পিয়ানিজমে

@ রাফেলাতডিজিটালপিয়ানিজম আমি আপনার বর্ণনার মত একই কাজ করার চেষ্টা করছি কিন্তু ক্রমাগত পাচ্ছি Uncaught TypeError: base is not a constructor- কোন ধারণা কেন? ধন্যবাদ
টম বর্মান

আপনার SwatchRendererমিশ্রণের সাথে উইজেটটি পুনরায় লিখতে সক্ষম হওয়া উচিত কারণ ফাংশনটি defineশেষ হয়ে গেছে return $.mage.SwatchRenderer;। আমি একই ফাইলে সংজ্ঞায়িত অন্যান্য উইজেট সম্পর্কে জানি না SwatchRendererTooltip
অস্পষ্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.