সমস্ত পৃষ্ঠার জন্য কীভাবে জেএস ফাইল যুক্ত করুন


38

সমস্ত পৃষ্ঠাগুলির জন্য একটি জেএস ফাইল কীভাবে লোড করতে হবে তার বিষয়ে আমি গুগল ফলাফলের 3 পৃষ্ঠাগুলি পড়েছি এবং এখনও এটি করতে সক্ষম নই।

আমি কয়েকটি সন্দেহ পেয়েছি, আশা করি কেউ তাদের সমাধান করতে পারে।

  1. আমার app/codeসাথে requirejs-config.jsকি ভিতরে ভিতরে একটি মডিউল তৈরি করা দরকার ? বা আমি requirejs-config.jsপরিবর্তে আমার থিমের ভিতরে একটি রাখতে পারি?

  2. আমার ভিতরে কী রাখা উচিত requirejs-config.js?

  3. কোডটি আমার .jsফাইলের ভিতরে দেখতে কেমন হবে? আমি দেখেছি আপনি jQuery এর ব্যবহার করতে পারবেন না document.readyএবং আপনার অবশ্যই একটি থাকতে হবেdefine([

  4. আমার ভিতরে কী রাখা উচিত define([?

  5. যদি আমি তৃতীয় পক্ষের jQuery মডিউল পেয়েছি তবে তাদেরকে কাজ করার জন্য আমার এডিট করতে হবে?

  6. আমার .js ফাইলটি বিদ্যমান আছে বলে ম্যাজেন্টোকে বলতে কি আমার কোথাও এক্সএমএল লাগানো দরকার?

  7. আমি যদি app/codeসেখানে সমস্ত জেএস কোড সহ একটি মডিউল তৈরি করি, তবে এটি সমস্ত পৃষ্ঠায় থাকা সমস্ত জিনিস অন্তর্ভুক্ত করবে? আমি কীভাবে এটি অর্জন করতে পারি?

উত্তর:


65

main.jsসমস্ত পৃষ্ঠায় একটি কাস্টম ফাইল লোড করতে (প্রয়োজনীয় জেএস-উপায়ে) এটি একটি ভাল উপায়:

1) তৈরি করুন main.js

main.jsথিম ফোল্ডারের মধ্যে তৈরি করুন

<theme_dir>/web/js/main.js

এই বিষয়বস্তু সহ:

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

  // Here your custom code...
  console.log('Hola');

});

সংক্ষেপে : আমরা শুরুতে নির্ভরতা ঘোষণা করি, যেমন "jquery"। আমরা ফাংশনের প্যারামিটার হিসাবে যেমন ফাংশন মধ্যে নির্ভরতা ব্যবহার করে, এর জন্য পরিবর্তনশীল নাম সংজ্ঞায়িত "jquery" --> $। আমরা আমাদের কাস্টম কোডটি ভিতরে রেখেছি function($) { ... }

2) main.jsএকটি requirejs-config.jsফাইল দিয়ে ঘোষণা করুন

requirejs-config.jsথিম ফোল্ডারের মধ্যে একটি ফাইল তৈরি করুন :

<theme_dir>/requirejs-config.js

এই বিষয়বস্তু সহ:

var config = {

  // When load 'requirejs' always load the following files also
  deps: [
    "js/main"
  ]

};

"js/main"আমাদের কাস্টম পথ main.js। ".Js" এক্সটেনশানটির প্রয়োজন হয় না।

আমাদের ম্যাজেন্টোতে সংজ্ঞায়িত requirejs-config.jsঅন্যান্য সাথে মিশে যাবে requirejs-config.js

প্রয়োজনীয় জেএস main.jsপ্রতিটি পৃষ্ঠায় আমাদের ফাইল লোড করবে , নির্ভরতাগুলি সমাধান করবে এবং অ্যাসিঙ্ক উপায়ে ফাইলগুলি লোড করবে।


Alচ্ছিক: তৃতীয় পক্ষের লাইব্রেরি সহ

এটি তৃতীয় পক্ষের লাইব্রেরি অন্তর্ভুক্ত করার উপায়।

1) লাইব্রেরি এতে যুক্ত করুন web/js:

<theme_dir>/web/js/vendor/jquery/slick.min.js

2)requirejs-config.js এই সামগ্রীটি খুলুন এবং যুক্ত করুন:

var config = {

  deps: [
    "js/main"
  ],

  // Paths defines associations from library name (used to include the library,
  // for example when using "define") and the library file path.
  paths: {
    'slick': 'js/vendor/jquery/slick.min',
  },

  // Shim: when you're loading your dependencies, requirejs loads them all
  // concurrently. You need to set up a shim to tell requirejs that the library
  // (e.g. a jQuery plugin) depends on another already being loaded (e.g. depends
  // on jQuery).
  // Exports: if the library is not AMD aware, you need to tell requirejs what 
  // to look for so it knows the script has loaded correctly. You can do this with an 
  // "exports" entry in your shim. The value must be a variable defined within
  // the library.
  shim: {
    'slick': {
      deps: ['jquery'],
      exports: 'jQuery.fn.slick',
    }
  }

};

এটি আসলে যা জটিল তা দেখতে আরও জটিল দেখাচ্ছে।

3) এর মধ্যে নির্ভরতা যুক্ত করুন main.js:

define([
  'jquery',
  'slick'
], 
function($) {

  // ...

});

হাই, আপনি কি আমাকে বলতে পারবেন এখানে আমাকে বুটস্ট্র্যাপ.জেএস অন্তর্ভুক্ত করতে হবে কিনা। আমি কীভাবে এটি যুক্ত করতে পারি যাতে বুটস্ট্র্যাপ আমার থিমটিতে ভাল কাজ করে। ধন্যবাদ!
অনুজিৎ

1
@ অনুজিৎ আপনি উপরের উদাহরণটিতে bootstrap.jsযেভাবে অন্তর্ভুক্ত করেছেন slick.jsআপনি একইভাবে অন্তর্ভুক্ত করতে পারেন । শিম মানটির জন্য আপনি এটি ব্যবহারের চেষ্টা করতে পারেন: 'bootstrap': { deps: ["jquery"], exports: '$.fn.popover' }যেমন এখানে ব্যাখ্যা করা হয়েছে: stackoverflow.com/a/13556882/3763649
Andrea

আমার প্রয়োজনীয় কনফিগারেশন.জেএস দেখুন var config = { deps: [ "js/animate", "js/incase", "js/confetti" ], paths: { "jquery.bootstrap":"js/bootstrap.min" }, shim:{ 'jquery.bootstrap':{ 'deps':['jquery'] } } }; require(["jquery",'jquery.bootstrap', 'jquery/ui', 'jquery/validate', 'mage/validation/validation', 'domReady!']); আমার মিনিকার্ট এটি নিয়ে কাজ করা বন্ধ করে দেয়
অনুজিৎ

@ অনুজিৎ ভাল আপনি আপনার প্রয়োজনীয় কনফিগারেশন.জেএস রিপোর্ট করে এবং জাভাস্ক্রিপ্ট কনসোলে কিছু ত্রুটি থাকলে এই সমস্যাটি দিয়ে আপনি আরও একটি প্রশ্ন খুলুন। আপনি যদি এখানে আপনার প্রশ্নটি যুক্ত করেন তবে আমি আপনাকে সহায়তা করতে পেরে আনন্দিত হব :)
আন্দ্রে

যখন আরও জেএস অন্তর্ভুক্ত করা হয়েছে তখন আমার ত্রুটিগুলি রয়েছে "জেএস ​​/ স্ক্রোলম্যাগিক.মিন", "জেএস ​​/ ডিবাগ.এডিআইডিআইকিস.মিন"
yavonz15

6

আপনি নীচের মতো xML ব্যবহার করে জেএস ফাইল যুক্ত করতে পারেন। এটি সমস্ত পৃষ্ঠায় জেএস যুক্ত করবে।

কাস্টম মডিউল সহ:

default.xmlআপনার মডিউলে ফাইল তৈরি করুন।

app/code/vendor_name/module_name/view/frontend/layout/default.xml

<?xml version="1.0"?>
<page xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <head>
        <!-- Add js using link tag-->
        <link src="js/script.js"/>

        <!-- Add js-->
        <script src="Vendor_Module::js/script.js"/>

        <!-- Add external js -->
        <script src="https://apis.google.com/js/platform.js" src_type="url" />
   </head>
</page>

6

ফাইলটির নকল করুন:

অ্যাপ্লিকেশন / কোড / Magento / থিম / দেখতে / ফ্রন্টএন্ড / লেআউট / default_head_blocks.xml

প্রতি

অ্যাপ্লিকেশন / কোড / আপনার_ভেন্ডার / আপনার_প্রেম / ম্যাজেন্টো_ধর্মী / খেলোয়াড় / ডিফল্ট_হেড_ব্লক.এক্সএমএল

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <!-- Add local resources -->
        <css src="css/my-styles.css"/>

        <!-- The following two ways to add local JavaScript files are equal -->
        <script src="Magento_Catalog::js/sample1.js"/>
        <link src="js/sample.js"/>

        <!-- Add external resources -->
        <css src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css" src_type="url" />
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js" src_type="url" />
        <link src="http://fonts.googleapis.com/css?family=Montserrat" src_type="url" /> 
    </head>
</page>

আরও তথ্যের জন্য:

http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/xml-manage.html

শুভকামনা!

বেসিকটি পেতে বিটিডাব্লু ম্যাজেন্টো থেকে সীমান্তের ডিভডোকস অফিসিয়ালটি পড়ে:


কারণ বুটস্ট্র্যাপের স্ক্রিপ্টটিতে জিকুয়েরি শুরু করা দরকার, এটি মাথায় রেখে কাজ করবে না। এই অফিসিয়াল ডক পড়ুন । আরও তথ্যের জন্য. :)
ভিএস

2

default_head_blocks.xmlফাইলটি ব্যবহার করে জেএস যুক্ত করার পদ্ধতিটি তৃতীয় পক্ষের জিকুয়েরি প্লাগইনগুলির জন্য কাজ করবে না। সুতরাং, আপনি যদি কাস্টম জিকুয়েরি প্লাগইন যুক্ত করতে চান এবং সেগুলি ব্যবহার করতে চান তবে আপনার requirejs-config.jsফাইল ব্যবহার করতে হবে।

এক এক করে আপনার প্রশ্নের উত্তর দিতে:

1) এবং 2) requirejs-config.jsফাইল যুক্ত করার জন্য আপনার কোনও মডিউল তৈরি করার দরকার নেই । আপনি এটিকে এই জায়গায় যুক্ত করতে পারেন:

app/design/frontend/<Vendor>/<theme>/requirejs-config.js

একটি সঠিক ফাইল তৈরি করার জন্য এই উত্তরটি দেখুনrequirejs-config.js

3) আপনার স্ক্রিপ্টগুলি লেখার আগে আপনাকে আপনার জেএস ফাইলের নির্ভরতাগুলি তালিকাবদ্ধ করতে হবে।

require([
  'jquery',
  'jquery/ui'
], function($){
   // ... Your code here
}); 

উপরের কোডটিতে বলা হয়েছে যে আপনার স্ক্রিপ্টগুলির জন্য আপনার jquery এবং jquery ui দরকার।

৪) আপনি define([জাভাস্ক্রিপ্ট প্লাগইন তৈরি না করে আপনার ব্যবহারের দরকার নেই ।

5) না, আপনার এডিট করার দরকার নেই তবে আপনাকে requirejs-config.jsফাইলটি ব্যবহার করে তাদের নির্ভরতা নির্দিষ্ট করতে হবে । যদি আপনার কাছে owl.carousel.min.jsথাকে তবে <vendor>/<theme>/web/js/owl.carousel.min.jsআপনার requirejs-config.jsফাইলটি দেখতে এইরকম হবে:

var config = {
    map: {
        '*': {
            owlCarouselTheme: 'js/owl.carousel.min'
        }
    },
    shim: {
        owlCarouselTheme: ['jquery']
    }
};

উপরের কোডে, দয়া করে মনে রাখবেন যে .jsফাইলটির জন্য কোনও নেই । এবং এখন এটি আপনার জেএসে ব্যবহার করতে

require(['jquery', 'owlCarouselTheme'],function($){
    $(document).ready(function() {
        $(".footer.links").addClass("owl-carousel").owlCarousel({items: 1});
    });
})

যদি সবকিছু ঠিকঠাক কাজ করে তবে আপনার স্লাইডারে আপনার পাদচরণ লিঙ্ক থাকা উচিত।

)) এবং)) আপনার জেএস যুক্ত করার জন্য @ গল্ডির দ্বারা প্রস্তাবিত পদ্ধতিটি কেবল ব্যবহার করুন। এটি সমস্ত পৃষ্ঠায় আপনার জেএস ফাইল যুক্ত করবে।

আরও পড়ার জন্য, আপনি এই পোস্টে দেখতে পারেন

আশাকরি এটা সাহায্য করবে.


1

এইভাবে আমি আমার ম্যাজেন্টো 2 কাস্টম থিমটিতে ডটডটড লাইব্রেরি যুক্ত করি।

1. আপনার থিমটিতে জেএস লাইব্রেরিটি ডাউনলোড করুন এবং অনুসরণ করুন:

// app/design/frontend/Namespace/themename/web/js/jquery.dotdotdot.min.js

২. একটি থিমের প্রয়োজনীয় জেএস ফাইল অনুসরণ করুন এবং অনুসরণকারীদের নতুন যুক্ত হওয়া লাইব্রেরিটি জানুন know

// app/design/frontend/Namespace/themename/requirejs-config.js
var config = {
   map: {
       '*': {
           dotdotdot: 'js/jquery.dotdotdot.min',
       }
   }
};

৩. আপনার থিমের মূল জেএস ফাইলগুলিতে যুক্ত গ্রন্থাগারটি অনুসরণ হিসাবে ব্যবহার করুন:

// app/design/frontend/Namespace/themename/web/js/main.js
require([ 'jquery' , 'dotdotdot' , 'domReady!'],function($){
    $(window).load(function() {
        //custom js code
        /* $(".product-item-name").each(function(){
            $(this).dotdotdot(); 
        }); */
    });
});

৪. এবং আপনার থিমের জেএস ফাইলটি আপনার সাইটের মাথায় নিম্নলিখিত হিসাবে অন্তর্ভুক্ত করুন:

// app/design/frontend/Namespace/themename/Magento_Theme/layout/default_head_blocks.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <link src="js/main.js"/> 
    </head>
</page>

আপনি magento2 এ প্রতি পৃষ্ঠায় যে কোনও বাহ্যিক জেএস লাইব্রেরি এবং কাস্টম ফাইল যুক্ত করতে পারেন।


আমি চেষ্টা করেছি এটি প্রশাসকের পক্ষে,
জেএস

চমৎকার উত্তর. এটি চেষ্টা করবে। এমন কোনও পৃষ্ঠা নির্দিষ্ট করার কোনও উপায় নেই যেখানে জেএস ফাইলটি প্রয়োজন।
মোহাম্মদ জোরেদ

একটি নির্দিষ্ট পৃষ্ঠার জন্য, উপরের উদাহরণে "default_head_blocks.xML" সামগ্রীটি আপনার নির্দিষ্ট বিন্যাস ফাইলটিতে সরান। উদাহরণস্বরূপ, পণ্য বিবরণ পৃষ্ঠার ক্ষেত্রে অ্যাপ্লিকেশন / নকশা / সম্মুখভাগ / নামস্থান / থিমেনাম / ম্যাজেন্টো_চ্যাটালগ / লেআউট / ক্যাটালগ_প্রডাক্ট_ভিউ.এক্সএমএল এ এই এক্সএমএল যুক্ত করুন
সাইড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.