เป็นไปได้ที่จะเปลี่ยนประเภทบล็อกใน XML รูปแบบ?


13

เป็นไปได้ไหมที่จะเปลี่ยนประเภทบล็อกใน XML เลย์เอาต์?

ฉันรู้วิธีเปลี่ยนแม่แบบโดยใช้setTemplateวิธีการ แต่ฉันพยายามเปลี่ยนประเภทของบล็อก เป็นไปได้ไหม


โปรดอธิบายรายละเอียดเกี่ยวกับสิ่งที่คุณต้องเปลี่ยน
Keyul Shah

คำตอบ:


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 ของส่วนขยายที่กำหนดเองของคุณเพื่อสลับคลาสบล็อกกับคุณ สิ่งนี้จะสมเหตุสมผลหากคุณวางแผนที่จะขยายหรือแก้ไขฟังก์ชั่นของบล็อก
Biagio Arobba

3

คุณไม่สามารถเปลี่ยนได้ในเลย์เอาต์ไฟล์ afaik อย่างไรก็ตามคุณสามารถขยายและแทนที่พวกเขาในไฟล์ปรับแต่งของคุณ

ตัวอย่าง:

<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.