Apakah mungkin untuk mengubah tipe blok dalam tata letak XML?
Saya tahu cara mengubah template menggunakan setTemplate
metode, tetapi saya mencoba mengubah tipe blok. Apakah ini mungkin?
Apakah mungkin untuk mengubah tipe blok dalam tata letak XML?
Saya tahu cara mengubah template menggunakan setTemplate
metode, tetapi saya mencoba mengubah tipe blok. Apakah ini mungkin?
Jawaban:
Mengubah tipe blok berarti mengubah kelas blok, jadi tidak, tapi ...
... Anda bisa saja menimpa blok:
layout.xml
diproses setelah blok dibuat, misalnya dengan <depends>
diCompany_Module.xml
Masalahnya adalah, ini menimpa blok dan tidak mengubah jenisnya. Ini berarti semua yang dilakukan pada blok ini antara kreasi dan perubahan Anda hilang.
Misalnya untuk mengubah 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>
Anda tidak dapat mengubahnya di file tata letak afaik. Anda dapat, bagaimanapun, memperluas dan menimpanya di file konfigurasi Anda.
Contoh:
<config>
<global>
<blocks>
<catalog>
<rewrite><product_view>My_Custom_Block_Product_View</product_view></rewrite>
</catalog>
</blocks>
</global>
</config>
Ingatlah untuk memperpanjang blok asli.
Saya menghadapi masalah serupa yang perlu saya perbarui blok tertentu untuk tata letak tertentu.
Apa yang akhirnya saya lakukan dan tampaknya berhasil adalah (dalam file layout)
<controller_x_y>
<reference name="block_name_reference">
<block type="mymodule/customblock" name="block_name_reference" />
</reference>
</controller_x_y>
Semoga ini membantu.