এক্সএমএল লেআউটে ব্লকের ধরণের পরিবর্তন সম্ভব?


13

এক্সএমএল লেআউটে কোনও ব্লকের ধরণের পরিবর্তন করা কি সম্ভব?

setTemplateপদ্ধতিটি ব্যবহার করে কীভাবে টেমপ্লেট পরিবর্তন করতে হয় তা আমি জানি তবে আমি একটি ব্লকের ধরণের পরিবর্তন করার চেষ্টা করছি। এটা কি সম্ভব?


দয়া করে আপনার কী পরিবর্তন করতে হবে তা বিশদে ব্যাখ্যা করুন
কীউল শাহ

উত্তর:


7

ব্লকের ধরণ পরিবর্তন করা মানে ব্লক ক্লাস পরিবর্তন করা, সুতরাং না, তবে ...

... আপনি কেবল ব্লকটি ওভাররাইট করতে পারেন:

  1. পরে একটি অনুরোধ করা হয়েছে এমন একটি বিন্যাসের হ্যান্ডেল সন্ধান করুন বা নিশ্চিত হয়ে নিন যে layout.xmlব্লকটি তৈরি হওয়ার পরে আপনার প্রক্রিয়া করা হয়েছে, যেমন <depends>ইন-সহCompany_Module.xml
  2. একই নামের সাথে অন্য ধরণের একটি নতুন ব্লক তৈরি করুন

সমস্যাটি হ'ল এটি ব্লকটিকে ওভাররাইট করে এবং প্রকারটি পরিবর্তন করে না। এর অর্থ এই যা যা তৈরি এবং আপনার পরিবর্তনের মধ্যে যা এই ব্লকটিতে করা হয় তা হ'ল।

উদাহরণস্বরূপ catalog.navigation:

<layout version="0.1.0">
    <catalog_category_default translate="label">
        <reference name="left">
            <block type="myModule/navigation" name="catalog.leftnav" after="currency" template="myModule/catalog/navigation/left.phtml"/>
        </reference>
    </catalog_category_default>
</layout>

1
আপনি যে নতুন ব্লক ক্লাসটি প্রতিস্থাপন করতে চাইছেন তার "উত্তরাধিকারসূত্রে" একটি নতুন ব্লক ক্লাস তৈরি করতে পারেন। আপনার সাথে ব্লক ক্লাসটি অদলবদল করতে আপনার কাস্টম এক্সটেনশনের config.xml এ একটি এন্ট্রি যুক্ত করতে হবে। আপনি যদি ব্লকের কার্যকারিতা প্রসারিত বা সংশোধন করার পরিকল্পনা করেন তবে এটি বোধগম্য হবে।
বিয়াজিও আরব্বা

3

আপনি এটিকে লেআউট-ফাইলগুলিতে পরিবর্তন করতে পারবেন না। আপনি তাদের কনফিগারেশন ফাইলগুলিতে প্রসারিত ও ওভাররাইড করতে পারেন।

উদাহরণ:

<config>
    <global>
        <blocks>
            <catalog>
                <rewrite><product_view>My_Custom_Block_Product_View</product_view></rewrite>
            </catalog>
        </blocks>
    </global>
</config>

মূল ব্লক প্রসারিত মনে রাখবেন।


1

আমি একইরকম সমস্যার মুখোমুখি হয়েছি যে একটি নির্দিষ্ট বিন্যাসের জন্য আমার একটি নির্দিষ্ট ব্লক আপডেট করতে হবে।

আমি যা করতে পেরেছি এবং এটি কাজ করে মনে হচ্ছে তা হ'ল (লেআউট ফাইলটিতে)

<controller_x_y>
    <reference name="block_name_reference">
        <block type="mymodule/customblock" name="block_name_reference" />
    </reference>
</controller_x_y>

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

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