কীভাবে ব্লক নির্দিষ্ট জেএস (এবং সিএসএস) যুক্ত করবেন - _ রাইট_পথ?


9

তাই আমি ঘন্টা গুগলিং, পড়া, ect অধ্যয়ন ঘন্টা উপর আক্ষরিক ঘন্টা ব্যয় করেছি, কিন্তু কেউ (এমনকি অ্যালান ঝড় না!) এটি আমার কাছে বানান না। দেখে মনে হচ্ছে পুরো ইন্টারনেট ম্যাজেন্টো 2 এর একটি নির্দিষ্ট পৃষ্ঠায় জেএস বা সিএসএস যুক্ত করতে আগ্রহী , তবে আমি যা খুঁজছি তা কোনও নির্দিষ্ট ব্লকে জেএস / সিএসএস যুক্ত করছে ।

সুতরাং, সংক্ষেপে আমার প্রশ্নটি এখানে:

কোনও নির্দিষ্ট ব্লকে জেএস (এবং অতিরিক্ত সিএসএস) যুক্ত করার সর্বোত্তম উপায় কী , যাতে ব্লকটি পৃষ্ঠায় উপস্থিত থাকে (*) জেএস / সিএসএস লোড হয়, যদি ব্লকটি না থাকে, তবে কোনও সিএসএস / জেএস নেই? ?

* এর অর্থ হ'ল কোনও ব্লক সেটআপ করা যেতে পারে, বিন্যাস / পৃষ্ঠার টুএইচটিএমএল পদ্ধতিতে বা সবচেয়ে গুরুত্বপূর্ণভাবে কোনও বিভাগের ডাব্লুওয়াইএসআইডাব্লুআইজি এমবেড করা একটি ব্লক, লেআউট.এক্সএমএল এর মাধ্যমে একটি পৃষ্ঠা / টেমপ্লেটে, কোনও মেন্যুয়াল থেকে একটি কাস্টম পৃষ্ঠায় সেট করা যেতে পারে most / পণ্যের বিবরণ / সিএমএস ব্লক / সিএমএস পৃষ্ঠা।

আমি অ্যালানের প্রচুর দুর্দান্ত নিবন্ধগুলি পড়েছি (এই লোকটির কাছে আবারো কুডোস !!), এর চারপাশে অন্যান্য নিবন্ধগুলির পুনর্নবীকরণগুলির উল্লেখ না করার জন্য , তবে আমার অনুভূতিটি পাওয়া যায় যে প্রত্যেকে একটি পৃষ্ঠায়, একটি নির্দিষ্ট পৃষ্ঠায় যুক্ত করতে চায়, যেখানে নেই সেখানে ব্লক ব্যবহার করা হয়।

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

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

আমি জেএস / সিএসএস যোগ করার বিষয়ে কীভাবে যেতে পারি তা পড়তে পেরেছি (এটি সহজ "আমি কীভাবে করব না ???" এটি একটি আরও কনসাইজ "সঠিক / ম্যাগ 2 উপায় কী ???") এবং এগুলির সাথে আমি পরিচিত কৌশল:

  • <head></head>মূল উপাদান ব্যবহার করে / ভিউ / সিলেটআর
  • আমার মডিউলে একটি হেড ব্লক যুক্ত করা, হেড.অনুষ্ঠানিকর সাথে সংযুক্ত করা হয়েছে, আমার ব্লকটি লোড হয়েছে কিনা তা নিয়ে কিছু যুক্তি সহ
  • কোনও পৃষ্ঠা / টেমপ্লেট এর संरक्षकের কাছ থেকে ইনজেকশনের জন্য \ সংস্থান ped গ্রুপযুক্ত সংগ্রহ এবং \ সংস্থান \ সংগ্রহস্থল অবজেক্টগুলি ব্যবহার করা হচ্ছে (এটি যদিও ব্লকগুলির সাথে অরক বলে মনে হচ্ছে না), সম্ভবত লোডিংয়ের ক্রম ??
  • প্রয়োজনীয় জেএস ব্যবহার করে এবং আমার মডিউলে একটি প্রয়োজনীয় জেএস কনফিগারেশন গ্রহণ করে

আমি কি কিছু মিস করেছি ??

কেউ বিশ্বাস করেন যে সঠিক উপায়টি হবে প্রয়োজনীয় জেএস লাইব্রেরিটি ব্যবহার করা এবং x-magento-init বৈশিষ্ট্য বা require("my_module", function(){ ... })কোনও ইনলাইন স্ক্রিপ্টে একটি বাক্য গঠন সহ একটি স্ক্রিপ্ট। তবে এ কি আমার কাছে ক্লানকি বলে মনে হচ্ছে? স্ক্রিপ্টগুলি লোড করার জন্য আমাকে স্ক্রিপ্টগুলি সেট আপ করতে হবে, আমার জেএস-এর কিছুটা অন্তর্নিহিত করতে বাধ্য করা হবে, তবে এটি আমার পিটিএইচটিএমএলে পপ করে "এখানে আমার ব্লক, এখন আমাকে কিছু জেএস প্রয়োজন" বলার সর্বাধিক সংবেদনশীল উপায় বলে মনে হচ্ছে।

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

এটি __constructসম্পদ সিস্টেমে ইনজেক্টড নির্ভরতা সহ পদ্ধতিটি পরামর্শ দেয় । তবে আমি এটি কাজ করতে পারি না, এটি এখানে অ্যালান স্টর্মস দ্রুত প্রবন্ধে নিশ্চিত হওয়া নিশ্চিত হয়েছে: ম্যাজেন্টো কুইকিজ: ম্যাজেন্টো 2: প্রোগ্রামিয়ালি ফ্রন্টএন্ড সম্পদ ফাইল যুক্ত করা

সাইন অফটি নোট করুন "সুতরাং তাদের সম্মুখভাগের সম্পদগুলি তাদের সাথে রাখে এমন ব্লক তৈরি করার কোনও চিন্তাভাবনা উইন্ডোটির বাইরে" " ... বমর :(

আপনাকে পড়তে এবং বিবেচনা করার জন্য সময় দেওয়ার জন্য আপনাকে ধন্যবাদ । আমি আপনার প্রতিক্রিয়া শোনার জন্য উন্মুখ!

পিএস> স্পষ্টতই এটি স্ট্যাক এক্সচেঞ্জ তাই আমি যা অর্জন করতে চাইছি তার জন্য উত্তরটি অবশ্যই অবশ্যই সেরা কোর্স হিসাবে চিহ্নিত করব (নির্দিষ্ট সংস্থানীয় সংস্থানটি ব্লক করুন) তবে আমি আমার পোস্টের নীচে রেফারেন্স হিসাবে তালিকাভুক্ত করতে চাইব যে কোনও এবং সমস্ত উত্তর যা হয় আলোচনায় যুক্ত হয় বা একটি শক্ত সমাধানের পরামর্শ দেয়!

উত্তর:


5

জেএসের জন্য এটি সহজ হওয়া উচিত কারণ ম্যাজেন্টো 2 ব্যবহার করে require.js
সুতরাং এর অর্থ এটি যখন আপনার প্রয়োজন হয় তখন আপনি ফ্লাইতে একটি জেএস অন্তর্ভুক্ত করতে পারেন।

একটি ব্লক একটি টেম্পলেট দ্বারা (বেশিরভাগ ক্ষেত্রে) রেন্ডার করতে হয়।
সুতরাং আপনার এটি আপনার টেমপ্লেটে যুক্ত করতে হবে:

<script type="text/javascript">
    require([
        "jquery",
        .... //any other js dependencies you have
        "Namespace_Module/js/filename_here"
    ], function(){
        //some js code here. 
        //if you don't need any additional js code just have an empty function
    });
</script>

এখন আপনার js ফাইলটি তৈরি করুন view/adminhtml|frontend/web/js/filename_here.jsযেখানে আপনার সমস্ত জেএস কোড উপস্থিত রয়েছে।

require.js যখন অনুরোধ করা হবে তখন আপনার ফাইলটি কীভাবে তুলবেন তা জানতে পারবেন

সিএসএস ফাইলগুলির জন্য আমি জানি না এটি সম্ভব কিনা।
সিএসএস ফাইলগুলি headপৃষ্ঠার অংশে যেতে হবে , তবে উদাহরণস্বরূপ যদি আপনি যদি এই জাতীয় কোনও সেন্টিম পৃষ্ঠার বিষয়বস্তুর ভিতরে আপনার ব্লক থাকে {{block class="..." template="..."}}, যখন সিমি পৃষ্ঠা পৃষ্ঠার সামগ্রীটি প্রক্রিয়া করা উচিত, তখন পর্যন্ত এইচটিএমএল ইতিমধ্যে রেন্ডার করা হয় সুতরাং আপনি পিএইচপি এর মাধ্যমে হেড ব্লকে অন্য কিছু যুক্ত করতে পারবেন না। আপনি এটিকে টেমপ্লেটে যুক্ত করার চেষ্টা করতে পারেন তবে এটি <style...আপনি চান না (আমি ধরে নিই)।


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

আসলে, আমি এটি প্রয়োজনীয় পাতায় খুঁজে পাই, কীভাবে সিএসএস লোড করতে হবে প্রয়োজনীয় জেএস দিয়ে! : প্রয়োজনীয় js.org/docs/faq-advanced.html#css
ডিজিটাল

@cygnusdigital। খুশী হলাম। তাই সমস্যার সমাধান হয়েছে :)
মারিয়াস

হাই মারিয়াস, ভাল হ্যাঁ এবং না, এটি সমাধানের জন্য সত্যিকার অর্থেই ভাল প্রার্থী, এটি প্রয়োজনীয়তার সাথে খাপ খায় তাই আমি আপনার ইনপুটটির জন্য আপনাকে ধন্যবাদ জানাই, তবে আমি আলোচনা এবং বিকল্পগুলির সন্ধান করছি। সম্ভবত এটি কেবলমাত্র আমি ডাইনোসর হয়ে যাই তবে আমি মনে করি এটির কোনও কনস্ট্রাক্টরের মধ্যে জেএস / সিএসএস লোড করা আরও বেশি অনুভূত। "যদি ব্লকটি নির্মিত / অন্তর্ভুক্ত থাকে তবে এটিকে মাথায় যুক্ত করুন" " : ডিআই আশ্চর্য হয়ে যায় যে এটি শর্তাধীন শর্তে মাথায় যুক্ত করা সম্ভব the উড়ানের প্রচলিত ব্লক। (যেমন ব্লক কনস্ট্রাক্টর পর্যায়ে আমার মডিউল থেকে হেড ব্লক যুক্ত করুন ditionতিহ্যগত)।
সাইগনাস ডিজিটাল

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