ম্যাজেন্টো 2 - নাম হিসাবে ব্লক নাম বনাম


10

আমি ম্যাজেন্টো 2 তে কিছু কাজ করছি এবং আমি ইনস্টল করা কিছু মডিউল (সীমান্তে) ওভাররাইট করছি।

তবে আজ আমি সবেমাত্র এমন একটি বিষয় নিয়ে এসেছি যা এর আগে আমার মুখোমুখি হয়নি। আমি যে মডিউলটি ব্যবহার করছি তার ভিতরে একটি ব্লক রয়েছে যার মধ্যে নিম্নলিখিতটি রয়েছে:

<referenceBlock name="product.info.details">
    <block class="Vender\Module\Block\Catalog\Related" name="posts.tab" as="blog.posts"
               template="Vender_Module::catalog/posts.phtml" group="detailed_info">
    </block>
</referenceBlock>

এটি এর নাম সেট করে:

posts.tab

এবং তারপরে এটি কল করার অনুমতি হিসাবে ব্যবহার করে :

যেমন = "blog.posts"

যখন আমি ব্লক রেফারেন্স করার চেষ্টা ব্যবহার অপসারণ করা হবে হিসাবে নাম আমি লক্ষ্য করেছি যে এটা পৃষ্ঠা থেকে এটি সরানোর করা হয় নি:

<referenceBlock name="product.info.details">
    <referenceBlock as="blog.posts" remove="true"/>
</referenceBlock>

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

কিন্তু আমার প্রশ্ন, কেন ব্লক ব্যবহার মাধ্যমে টানা হচ্ছে না করা হয় যেমন পরিবর্তে ব্যবহার মাধ্যমে টানা হচ্ছে নাম

দ্বিতীয়ত কি বিন্দু হিসাবে , কারণ স্পষ্টত ব্লক পরস্পরবিরোধী নাম যাহাই হউক না কেন থাকতে পারে না এবং অনন্য হওয়া উচিত - কিন্তু আমি সম্পূর্ণই ভুল হতে পারে।

উত্তর:


2

এই উদাহরণে এটির মতো বৈশিষ্ট্যটি অকেজো বলে মনে হচ্ছে (এটি অন্য কোথাও ব্যবহার না করা হয়), আমি মনে করি না যে এটি নাম বা উপাধিকার মাধ্যমে ডাকলে কোনও পার্থক্য হয় তাই এটি কী ব্যবহার করবেন তা বেছে নেওয়ার বিষয়টি বিকাশকারীদের উপর নির্ভর করে - কেবল লক্ষ্য করুন যে যদি কোনও উপনাম সেট করা থাকে তবে কল করার সময় আপনাকে এটি ব্যবহার করতে হবে getChildHtml

ব্যক্তিগতভাবে আমি কেবলমাত্র একটি দীর্ঘ ব্লকের নাম সংক্ষিপ্ত করতে এবং / অথবা কোনও টেমপ্লেটের মাধ্যমে রেন্ডার করার সময় এটিকে সহজেই পঠনযোগ্য করে তোলার জন্য ব্যবহার করব। উদাহরণস্বরূপ, যদি ইতিমধ্যে ব্যবহার checkout.header.logo.textকরার প্রয়োজন হয় logo.textএবং header.logo.textইতিমধ্যে ব্যবহৃত হয় তবে আপনি logoTextসমস্ত ব্লকের উপরের নামটি ব্যবহার করতে পারেন । এটি একই লেআউট হ্যান্ডেল এবং রেফারেন্সে সেট না করা হলে এটি একই ব্লকটি ব্যবহার করে অন্য ব্লকের রেন্ডারিংকে প্রভাবিত করবে না।

টিএল: ডিআর এটি খুব বেশি পার্থক্য করে না, পাঠযোগ্যতা / সংক্ষিপ্ত নামগুলির জন্য এটি আরও বেশি।

মন্তব্য

এই এম 1 প্রশ্নের আরও কিছুটা তথ্য রয়েছে - কখন 'নাম' ব্যবহার করবেন এবং কখন 'হিসাবে' ব্যবহার করবেন

আমি নিশ্চিত নই যে এটি এম 2 এর ক্ষেত্রে প্রযোজ্য কিনা তবে এম 1 এ অন্তত একটি যুক্তি ছিল aliasযা এই asবৈশিষ্ট্যটি ব্যবহার করেছিল , আমি মনে করি এটি ব্লকগুলি সন্নিবেশ করা বা আনসেট করার সাথে সম্পর্কিত ছিল।

ফ্যাবিয়ান শেমংলারের মতে: "ব্লকটি যদি কোনও কোনও নাম সংজ্ঞায়িত না করে তৈরি করা হয়, তবে নামটি ডিফল্ট হয়" " এটি এম 1 কে উল্লেখ করছে তবে আমি ধারণা করছি একই জিনিস এম 2 এর জন্য প্রযোজ্য।


এখনই ২.৩.১-তে আমি চিल्डএইচটিএমএল নামে পেতে পারি নি কারণ ব্লকের "হিসাবে" ওরফে ছিল। কেবলমাত্র নামটি মুছার পরে আমি কোনও টেমপ্লেটে ব্লকটি পেতে পারি।
TheKitMurkit

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