Magento2 - কীভাবে jQuery উইজেট প্রসারিত করবেন (কনফিগারযোগ্য.জেএস)


18

আমি একটি এক্সটেনশন তৈরি করছি যা ডিফল্ট কনফিগারযোগ্য বিকল্পগুলির লেবেলটি 'একটি বিকল্প চয়ন করুন ...' বৈশিষ্ট্যের নামের সাথে প্রতিস্থাপন করবে, উদাহরণস্বরূপ 'একটি রঙ চয়ন করুন ...'।

আমি কীভাবে jQuery উইজেট কনফিগারযোগ্য.জেগুলি প্রসারিত করতে (ওভাররাইড না করে!) এবং কেবল এই লাইনটি সংশোধন করতে পারি?

আমি ডকুমেন্টেশন থেকে জানি যে আমি একটি জিকুয়েরি উইজেটকে ওভাররাইড করতে পারি, তাই আমি এটি করেছি:

define([
    'jquery',
    'jquery/ui',
    'configurable' // usually widget can be found in /lib/web/mage dir
], function($){

    $.widget('silvan.configurable', $.mage.configurable, {

    });

    return $.silvan.configurable;
});

আমি এই ফাইলটি কীভাবে শুরু করতে পারি? আমি কি এটি প্রয়োজনীয় জেস-কনফিগারেশনের মাধ্যমে লোড করব? মানচিত্রের কাজটি কি কেবল ওভাররাইডিংয়ের জন্য?

কেবলমাত্র এই লাইনটি সংশোধন করা সম্ভব? এটি এই ফাংশন থেকে বলা হয়েছে:

_fillSelect: function (element) {}

উত্তর:


29

প্রথমত, আপনাকে নিশ্চিত করতে হবে যে আপনার মডিউলটির Magento_ConfigurableProductধারাবাহিকতা রয়েছে module.xml:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Vendor_ModuleName" setup_version="1.0.0">
        <sequence>
            <module name="Magento_ConfigurableProduct"/>
        </sequence>
    </module>
</config>

এতে উপাদান তালিকাটি পুনরায় জেনারেট করার বিষয়টি নিশ্চিত করুন config.php, অন্যথায় ক্রমটি উপেক্ষা করা হবে ( http://devdocs.magento.com/guides/v2.2/existance-dev-guide/build/module-load-order.html )

তারপরে কোড সহ ডিরেক্টরিতে requirejs-config.jsফাইল যুক্ত করুন view/frontend:

var config = {
    map: {
        '*': {
            configurable: 'Vendor_ModuleName/js/configurable'
        }
    }
};

পরিশেষে এর সাথে ডিরেক্টরিতে configurable.jsফাইল যুক্ত করুন view/frontend/web/js:

define([
    'jquery',
    'jquery/ui',
    'Magento_ConfigurableProduct/js/configurable'
], function($){

    $.widget('silvan.configurable', $.mage.configurable, {
        //code you want to override
    });

    return $.silvan.configurable;
});

আপনি একক লাইনকে মোডিফাই করতে পারবেন না তবে আপনি ভিতরে একক ফাংশনটি পরিবর্তন করতে পারবেন।


কোনও ফাংশন সংশোধন কীভাবে কাজ করে? পিতামাতাকে কীভাবে ডাকব?
অ্যালেক্স

আপনি যেমনটি আপনার উইজেটের অংশ হিসাবে ঠিক করেছিলেন ঠিক তেমন অন্য কোনও ফাংশনগুলিকে আপনি কল করতে পারেন। আপনার silvan.configurableস্বয়ংক্রিয়ভাবে সমস্ত পিতামাতার থেকে উত্তরাধিকার সূত্রে প্রাপ্ত।
বার্তোমিয়েজ সজুবার্ট

2
এটি দুর্দান্ত কাজ করে, আপনাকে ধন্যবাদ @ আইডিয়ো! অনুদান 7 ঘন্টা দেওয়া হবে (স্ট্যাকেক্সচেঞ্জের সীমা)। @ অ্যালেক্স আপনি এটি ব্যবহার করে পিতামাতাকে কল করতে পারেন __সুপার (); ফাংশন। দেখুন: learn.jquery.com/jquery-ui/widget-factory/extending-widgets/…
সিলভান

আরও কিছু কি আছে? আমার কাস্টম ফাইলটি লোড হওয়ার কারণ হবে না ... এটি উপরে বর্ণিত হিসাবে
সঠিকটি করেছে

1
এটি দুর্দান্ত কাজ করে! @ রোমান204 আমি একই সমস্যা পেয়েছি: আপনার মডিউল.এক্সএমএল ফাইলটিতে আপনার "সিকোয়েন্স" নোড রয়েছে তা নিশ্চিত করুন। তারপরে মডিউল ক্রমটি পুনরায় লোড করা গুরুত্বপূর্ণ। এই মুহূর্তে এটি করার একমাত্র উপায় হ'ল মডিউলটি অক্ষম করা এবং পুনরায় সক্ষম করা যেখানে আপনি মডিউল.এক্সএমএল ফাইলটিতে "সিকোয়েন্স" রেখেছেন। (আরও তথ্য: এই পৃষ্ঠায় নীল অংশটি দেখুন: devdocs.magento.com/guides/v2.2/existance-dev-guide/build/… )
স্টিজন ডুইনস্লেগার - একরন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.