ทุก ๆ บล็อกหรือกลุ่มของบล็อกถูกประกาศในconfig.xml
ไฟล์ของโมดูลเช่นนี้ (ภายใน<global>
แท็ก)
นี่คือตัวอย่างจากโมดูลแคตตาล็อก
<blocks><!-- marks definition of a block group -->
<catalog><!-- unique alias for blocks in the module -->
<class>Mage_Catalog_Block</class><!-- class prefix for all blocks -->
</catalog>
</blocks>
ซึ่งหมายความว่าบล็อกสามารถสร้างอินสแตนซ์ได้โดยใช้นามแฝงcatalog/class_name_here
ซึ่งclass_name_here
เป็นส่วนที่เหลือของคลาสพา ธ เริ่มต้นจากคำนำหน้า
วิธีการนี้จะถูกแมปโดยค่าเริ่มต้น catalog/class_name_here
Mage_Catalog_Block_Class_Name_Here
ในการเขียนบล็อกใหม่คุณต้องสร้างโมดูลที่ขึ้นอยู่กับโมดูลที่คุณพยายามเปลี่ยน ( Magento_Catalog
) ในตัวอย่างของฉัน
และคุณต้องเพิ่มสิ่งนี้ในconfig.xml
ใต้<global>
แท็ก
<blocks>
<catalog><!-- alias of the block group you are rewriting -->
<rewrite><!-- reserved tag: specify that you are rewriting something -->
<class_name_here>YourNamespace_YourModule_Block_Your_New_Class_Here</class_name_here> <!-- tag: the rest of the alias of the class you are rewriting. value: the name of your class that rewrites the core class -->
</rewrite>
</catalog>
</blocks>
จากนั้นสร้างคลาสYourNamespace_YourModule_Block_Your_New_Class_Here
(ตามโครงสร้างโฟลเดอร์ ZF) และทำให้คลาสนี้ขยายคลาสดั้งเดิม
class YourNamespace_YourModule_Block_Your_New_Class_Here extends Mage_Catalog_Block_Class_Name_Here
{
//your awesome code here
}
เมื่อเสร็จแล้วให้ปิดการรวบรวมและเปิดใช้งานอีกครั้ง (ถ้าจำเป็น) และล้างแคช
สิ่งนี้จะไม่ทำงานสำหรับบล็อกนามธรรม
ใช้งานได้เฉพาะคลาสที่ได้รับอินสแตนซ์
ตัวอย่าง
สมมติว่าคุณต้องการที่จะเขียนไฟล์แอป \ รหัส \ หลัก \ Mage \ แคตตาล็อก \ บล็อก \ สินค้า \ ดู \ Options \ ประเภท \ Select.phpซึ่งมีชั้นเรียนMage_Catalog_Block_Product_View_Options_Type_Select
ในโมดูลของคุณเองMarius_Test
จากนั้นคุณจะต้องมีรายการนี้ในconfig.xml
:
<blocks>
<catalog>
<rewrite>
<product_view_options_type_select>Marius_Test_Block_Catalog_Block_Product_View_Options_Type_Select</product_view_options_type_select>
</rewrite>
</catalog>
</blocks>
แอพ \ code \ local \ Marius \ Test \ Block \ Catalog \ Product \ View \ Options \ Type \ Select.php :
class Marius_Test_Block_Catalog_Product_View_Options_Type_Select extends Mage_Catalog_Block_Product_View_Options_Type_Select
{
//your awesome code here
}
Mage_Catalog_Block_Product_View_Options_Type_Select
ในแอปพลิเค \ รหัส \ ท้องถิ่น \ WR \ EPO \ บล็อก \ แคตตาล็อก \ บล็อก \ สินค้า \ ดู \ Options \ ประเภท \ Select.php ฉันลองแบบนี้: codepen.io/anon/pen/WYOqBr