ম্যাজেন্টো ব্লক এবং ব্লকের ধরণ বোঝা


105

আমি শুধু এর অর্থ বুঝতে চাই

 <block type="page/html" name="root" output="toHtml" template="example/view.phtml">

আমি গুগলের কাছ থেকে অনেকগুলি রেফারেন্স পেয়েছি এবং এটি সম্পর্কে অনেক কিছুই বুঝতে পেরেছি তবে type="page/html"আমার কাস্টম মডিউলটির জন্য কীভাবে কোনও প্রকার গঠন করা যায় তার গঠনটি আমি এখনও বুঝতে অক্ষম ।

দয়া করে ব্যাখ্যা করুন

type="A/B"

আমাকে জানতে দিন যে এ এবং বি কোথা থেকে এসেছে?

উত্তর:


126

Aএকটি মডিউল কারো নির্দেশ চলে না ওরফে । এই ক্ষেত্রে pageসংক্ষিপ্ত Mage_Page_Block( app/code/core/Mage/Page/etc/config.xmlযদি আপনি এটি দেখতে চান তবে এটি সংজ্ঞায়িত করা হয় )।

Bওরফে করতে বর্গ নাম আপেক্ষিক, প্রতিটি শব্দ প্রাথমিক অক্ষর মূলধন হয়। এই ক্ষেত্রে htmlহয়ে ওঠে Htmlএবং সমাধান করা ওরফে যুক্ত হয়, তাই এটি Mage_Page_Block_Html। এটি সম্ভবত ফাইলে পাওয়া যায় app/code/core/Mage/Page/Block/Html.phpকারণ শ্রেণীর নামগুলি ম্যাজেন্টোতে অবস্থিত সরাসরি অনুবাদ করে।

আপনি কি কোনও ব্লক ওরফেটির পরিবর্তে কোনও মডেল ওরফে ব্যবহার করছেন তবে pageতার Mage_Page_Modelপরিবর্তে হবে। রিসোর্স মডেল এবং সহায়কদের ক্ষেত্রেও একই জিনিস ঘটে। আপনার নিজস্ব মডিউলটিকে এটির কনফিগারেশনে এগুলি সংজ্ঞায়িত করতে হবে যদি এটির জন্য ব্লক, মডেল এবং সহায়ক রয়েছে।


@ ক্লক ওয়ার্কিক আপনাকে অনেক ধন্যবাদ আপনার উত্তর আমার জন্য খুব সহায়ক।
অনুপ_ত্রিপাঠি

তুমি আমাকে এক টন বাঁচিয়েছ ধন্যবাদ।
সুমিত মালিক

দুর্দান্ত ব্যাখ্যা
জলপেশ প্যাটেল

যদি এটি পুনর্লিখিত / ওভাররাইড ব্লক হয় তবে আমি কীভাবে ব্লক টাইপটি সংজ্ঞায়িত করতে এবং ব্যবহার করতে পারি?
ভিকি দেব

@ ভিকিডেভ আপনার নতুন কিছু করার দরকার নেই কারণ নতুন ব্লকটি পুরানো ব্লকের বংশধর হবে এবং এটি উপযুক্ত compatible আপনি এটি করতে পারেন, এবং করা উচিত, এটি উপস্থিতও নেই।
ক্লকওয়ার্কজেক

158

ম্যাজেন্টো ব্লক ধরণের সম্পর্কে আরও বুঝতে নিম্নলিখিতরূপে কিছু বিল্ট-ইন ব্লক রয়েছে যা ব্যাপকভাবে বিন্যাসে ব্যবহৃত হয়।

  1. core/template: এই ব্লকটি তার template গুণাবলী দ্বারা নির্ধারিত একটি টেম্পলেটকে রেন্ডার করে  । বিন্যাসে সংজ্ঞায়িত বেশিরভাগ ব্লকগুলি টাইপ বা উপ-প্রকারের  core/template
  2. page/html: এটি একটি সাব টাইপ  core/template এবং মূল ব্লক সংজ্ঞায়িত করে। অন্যান্য সমস্ত ব্লকগুলি এই ব্লকের চাইল্ড ব্লক।
  3. page/html_head: পৃষ্ঠার এইচটিএমএল প্রধান বিভাগটি সংজ্ঞায়িত করে যা জাভাস্ক্রিপ্ট, সিএসএস ইত্যাদি সহ উপাদান রয়েছে contains
  4. page/html_header: পৃষ্ঠার শিরোনামের অংশটি সংজ্ঞায়িত করে যা সাইটের লোগো, শীর্ষ লিঙ্কগুলি ইত্যাদি contains
  5. page/template_links: এই ব্লকটি লিঙ্কগুলির একটি তালিকা তৈরি করতে ব্যবহৃত হয়। পাদলেখ এবং শিরোলেখ অঞ্চলগুলিতে দৃশ্যমান লিঙ্কগুলি এই ব্লক প্রকারটি ব্যবহার করে।
  6. core/text_list: মত কিছু ব্লক  contentleftright ইত্যাদি ধরনের  core/text_list। যখন এই ব্লকগুলি রেন্ডার করা হয়, তাদের সমস্ত শিশু ব্লকগুলি getChildHtml() পদ্ধতিটি কল করার প্রয়োজন ছাড়াই স্বয়ংক্রিয়ভাবে রেন্ডার হয়ে যায় ।
  7. page/html_wrapper: এই ব্লকটি একটি মোড়কের ব্লক তৈরি করতে ব্যবহৃত হয় যা ক্রিয়াকলাপ দ্বারা সেট করা এইচটিএমএল ট্যাগের মধ্যে বাচ্চাদের ব্লকগুলি সরবরাহ করে  setHtmlTagName<div> কোনও উপাদান সেট না করা থাকলে ডিফল্ট ট্যাগ  ।
  8. page/html_breadcrumbs: এই ব্লকটি পৃষ্ঠায় ব্রেডক্র্যাম্বগুলি সংজ্ঞায়িত করে।
  9. page/html_footer: পৃষ্ঠার পাদচরণ ক্ষেত্রের সংজ্ঞা দেয় যা ফুটার লিঙ্ক, কপিরাইট বার্তা ইত্যাদি রয়েছে contains
  10. core/messages: এই ব্লকটি ত্রুটি / সাফল্য / বিজ্ঞপ্তি বার্তাকে রেন্ডার করে।
  11. page/switch: এই ব্লকটি ভাষা বা স্টোর স্যুইচারের জন্য ব্যবহার করা যেতে পারে।

এটি কেবলমাত্র ব্যবহৃত ব্লক ধরণের একটি তালিকা। আরও অনেকগুলি ব্লক প্রকার রয়েছে যা উন্নত থিম বাস্তবায়নে ব্যবহৃত হয়।


কী সম্পর্কে: {{ব্লক টাইপ = "সেমি / ব্লক" ব্লক_আইডি = "পদ" "}}
ড্যাসলিচ্ট

5
@ ড্যাসলিচ্ট ইতিমধ্যে উত্তরে উল্লেখ করেছে যে: এটি কেবলমাত্র ব্যবহৃত ব্লক ধরণের একটি তালিকা is আরও অনেকগুলি ব্লক প্রকার রয়েছে যা উন্নত থিম প্রয়োগে ব্যবহৃত হয়।
কামেশ জঙ্গি

ধন্যবাদ। সত্যিই সহায়ক ছিল।
আরকাম

8
<block type="page/html" name="root" output="toHtml" template="example/view.phtml">

পৃষ্ঠাটি etc/config.xmlএইচটিএমএল ফাইলের মধ্যে সংজ্ঞায়িত একটি ফ্রন্টএন্ডনাম একটি ব্লক শ্রেণীর নাম

আরো বিস্তারিত:

এই লাইনে type(type="page/html")আপনার template(template="example/view.phtml">)এবং নামের সাথে সম্পর্কিত ব্লক শ্রেণীর নাম সংজ্ঞায়িত করা প্রতিটি ব্লকের জন্য অনন্য।

প্রথমে ফোল্ডার কাঠামো দেখুন

অ্যাপ্লিকেশান> স্থানীয়> নামস্থান> moduleName> ইত্যাদি> config.xml

শেষ ঘন্টা FrontendName = 'mymodule'

অ্যাপ্লিকেশন> স্থানীয়> নেমস্পেস> মডিউল নাম> ব্লক > হ্যালো.এফপি

হ্যালো.এফপি-তে আপনি একটি ফাংশন তৈরি করেছেন

   class namespace_modulename_Block_Data extends Mage_Core_Block_Template
   {
    public function mydata()
        {
            $data = "Block is called";
            return $data;
         }     
}   

এবং এখন আপনার লেআউট এক্সএমএল পৃষ্ঠায় আসুন:

<block type="mymodule/data" name="xyz" template="example/view.phtml"> এখানে মায়াডাটা হ'ল সামনের নাম

এবং এখন আপনার টেম্পলেট এর আসা

টেমপ্লেট / উদাহরণ / ভিউ.এফটিএমএল পৃষ্ঠা

এখানে আপনি সরাসরি মাইডাটা () ফাংশন কল করতে পারেন

মত

<div>
<?php echo $this->mydata(); ?>
</div>

এখন আপনি ব্রাউজারে আপনার আউটপুট পেতে পারেন "ব্লক বলা হয়"


আপনি ব্লকের নাম হ্যালো.এফপি রেখেছেন তবে ব্লক শ্রেণীর নাম 'নেমস্পেস_মডিউলনেম_ব্লক_ডাটা', নামের শেষে কি হ্যালো হওয়া উচিত নয়?
রাই এতিশাম

5

আমি "বি" টাইপ সম্পর্কে জানি না, তবে "এ" কনফিগ.এক্সএমএল-তে উদাহরণ হিসাবে আপনার মডিউল নাম ট্যাগটি উল্লেখ করে:

<A><!-- script --></A>

না, আপনি ভুল নন তবে "<!-- script -->"বিভ্রান্তিকর হতে পারে। আসুন আমরা স্পষ্ট করে বলতে পারি: উপরোক্ত উত্তরগুলি যেমন বলেছে, এটি একটি উপনাম, যা দুটি অংশ নিয়ে গঠিত, প্রথম অংশ ("এ") নিজেই এমন একটি নাম যা আপনি আপনার মডিউলের ক্লাসগুলির সাথে সংজ্ঞায়িত করেন config.xml, দ্বিতীয়টি একটি পথের সাথে সম্পর্কিত নোডের মান এগুলি একসাথে ("এ" + ক্যাপিটালাইজড "বি") প্রথম শ্রেণীর ("এ" নোডের মান) ঠিক যেমনটি আপনি নির্ধারণ করেছেন ঠিক তেমনভাবে ব্যবহার করে কোনও শ্রেণীর নামের সাথে অনুবাদ করা হবে (আপনি যদি ঘন্টা চান না তবে উপরের / ছোট হাতের জন্য দেখুন) যন্ত্রণা সহ) এবং দ্বিতীয় অংশটি প্রতিটি আন্ডারস্কোরের পরে মূলধন হয়। সুতরাং, একটি ব্লক এবং এই কনফিগার দিয়ে এ / বি উদাহরণ দিয়ে শুরু করুন:

<config>
  ...
  <global>
    <blocks>
      <A>Vendor_Module_Block</A>
    </blocks>
  </global>
  ...
</config>

রানটাইম সালে A/BMagento কনফিগ দ্বারা সমাধান করা হবে Vendor_Module_Block_Bযা পরে নিম্নলিখিত পথ থেকে autoload দ্বারা অন্তর্ভুক্ত হবে: public/app/local/Vendor/Module/Block/B.php। তোমার দিকে কটাক্ষপাত করা ভাল করে বুঝতে আমি পরামর্শ পেতে Mage_Core_Model_Config::getGroupedClassName(), Mage_Core_Model_Config::getModelInstance()এবং Varien_Autoload::autoload()


3

আমি "বি" টাইপ সম্পর্কে জানি না, তবে "এ" কনফিগ.এক্সএমএলে আপনার মডিউল নাম ট্যাগকে উল্লেখ করে

কনফিগ.এক্সএমএল ফাইলের একটি উদাহরণ:

<A><!-- script --></A>

এনবি: আমি আশা করি আমি ভুল নই ..

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