วิธีการแทนที่บล็อกใน v2.1
ฉันพยายามที่จะแทนที่บล็อก Topmenu ใน Magento 2.1 แต่ไม่สามารถหาคำแนะนำได้ ทุกสิ่งที่ฉันพบในที่นี้และที่อื่น ๆ ดูเหมือนว่าจะใช้เฉพาะกับเวอร์ชัน 2.0 ซึ่งดูเหมือนว่าจะใช้โครงสร้างโฟลเดอร์ที่แตกต่างกันหรือมีตัวอย่างโค้ดบางส่วนเท่านั้นซึ่งคาดว่าฉันจะรู้บริบทที่เหมาะสมของพวกเขาแล้ว app/design/frontend/Vendor/theme_nameโครงสร้างโฟลเดอร์ของฉันปัจจุบันสำหรับธีมที่กำหนดเองคือ ภายในนี้ฉันมีการลงทะเบียนธีมและไฟล์แต่งเพลงเช่นเดียวกับโฟลเดอร์สำหรับโมดูลต่างๆเช่นและMagento_ThemeMagento_Search จากสิ่งที่ฉันเข้าใจฉันต้องเริ่มต้นด้วยetc/di.xmlไฟล์เช่นด้านล่างแก้ไขจากที่นี่ : <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <preference for="Magento\Theme\Block\Html\Topmenu" type="[Namespace]\[Module]\Block\Html\Topmenu" /> </config> ฉันยังเข้าใจว่าขั้นตอนต่อไปคือการเพิ่มBlock/Html/Topmenu.phpไฟล์เช่นด้านล่าง (แก้ไขอีกครั้งจากแหล่งที่มาด้านบน): namespace [Namespace]\[Module]\Block\Html; class Topmenu extends \Magento\Theme\Block\Html\Topmenu { protected function _addSubMenu($child, $childLevel, $childrenWrapClass, $limit) { } } อย่างไรก็ตามมันไม่ชัดเจนสำหรับฉันสิ่งที่ฉันควรใช้สำหรับ[Namespace]และ[Module]หรือที่จะวางไฟล์เหล่านี้ ฉันได้ลองใช้ผู้ขายและชื่อชุดรูปแบบและการวางetcและBlockโฟลเดอร์ในapp/design/frontend/Vendor/theme_nameรวมถึงการapp/design/frontend/Vendor/theme_name/Magento_Themeแก้ไขการตั้งค่าเนมสเปซVendor\theme_name\Magento_Theme\Block\Htmlแต่ไม่มีผลใด ๆ หากใครสามารถช่วยอธิบายสิ่งที่ฉันต้องทำเพื่อแทนที่บล็อก Topmenu (และโดยการอนุมานบล็อกอื่น ๆ …