ฉันรู้ว่านี่เป็นคำถามเก่าที่มีคำตอบมากมายส่วนใหญ่แนะนำให้แก้ไขเทมเพลตเมนู แต่มันไม่ได้ผลสำหรับฉัน ไม่จำเป็นต้องอธิบายว่าทำไมทำไมสมมติว่าฉันเป็นโรค OCD เล็กน้อยเกี่ยวกับการทำสิ่งต่าง ๆ ในแบบที่ "ถูกต้อง"
คำถามนี้อาจเป็นข้อมูลสำหรับผู้อื่นที่ต้องการ นี่ไง
เริ่มต้นด้วยวีโอไอพี 1.7 page_block_html_topmenu_gethtml_before
เมนูด้านบนจะถูกสร้างขึ้นโดยใช้กิจกรรม: Mage_Catalog
โมดูลนี้ใช้เพื่อเพิ่มหมวดหมู่ ฉันต้องการที่จะใช้ สำหรับสิ่งนี้ฉันได้สร้างผู้สังเกตการณ์ในโมดูลของฉันดังนี้:
<global>
<events>
<page_block_html_topmenu_gethtml_before>
<observers>
<my_observer>
<class>mymodule/observer</class>
<method>addItemsToTopmenuItems</method>
</my_observer>
</observers>
</page_block_html_topmenu_gethtml_before>
</events>
</global>
ในObserver.php
ชั้นเรียนฉันมี
public function addItemsToTopmenuItems($observer){
//get the menu object: //Type Varien_Data_Tree_Node
$menu = $observer->getMenu();
//get the tree object in the menu //type Varien_Data_Tree
$tree = $menu->getTree();
//get current page handler
$action = Mage::app()->getFrontController()->getAction()->getFullActionName();
$brandNodeId = 'category-node-brand';
//set the node id, label and url
$data = array(
'name' => Mage::helper('catalog')->__('Brands'),
'id' => $brandNodeId,
'url' => Mage::getUrl('brands'),
'is_active' => ($action == 'brands')
);
//create a node object
$brandNode = new Varien_Data_Tree_Node($data, 'id', $tree, $menu);
//add the node to the menu
$menu->addChild($brandNode);
return $this;
}
ผู้สังเกตการณ์ของฉันมีรหัสอื่นที่เพิ่มแบรนด์ทั้งหมดเป็นรายการย่อยของBrands
เมนู แต่ไม่จำเป็นต้องใช้ที่นี่
มันทำงานได้อย่างสมบูรณ์และเพิ่มเมนูBrands
เป็นรายการสุดท้ายในเมนู
ปัญหาคือฉันต้องการสิ่งนี้เป็นเมนูแรกและผู้สังเกตการณ์ของฉันถูกเรียกหลังจากผู้สังเกตการณ์ในMage_Catalog
ที่เพิ่มหมวดหมู่ เนื่องจากไม่มีทาง (ไม่ใช่ที่ฉันรู้) ในการจัดเรียงลำดับของผู้สังเกตการณ์ในเหตุการณ์ ... ฉันมีปัญหา
[แก้ไข]
ตามที่ @Benmarks แนะนำฉันได้ทำMage_Catalog
โมดูลขึ้นอยู่กับโมดูลของฉันและตอนนี้รายการเมนูของฉันเป็นรายการแรกในรายการ แต่ฉันยังต้องเพิ่มเมนูระหว่างหมวดหมู่และท้ายที่สุด การสร้างโมดูลใหม่อาจช่วยแก้ปัญหารายการต่าง ๆ ในตอนท้ายของเมนู แต่ฉันยังคงมีปัญหาเกี่ยวกับสิ่งที่อยู่ในหมวดหมู่
[/ แก้ไข]
ดังนั้นโดยทั่วไปคำถามของฉันจะกลับไปที่ " (ฉัน) โหนดของ a Varien_Data_Tree_Node
ในVarien_Data_Tree
วัตถุ? "
โปรดอย่าแนะนำให้เพิ่มBrands
หมวดหมู่แรกในแผนผังหมวดหมู่ นี่ไม่ใช่ตัวเลือก (อย่างที่ฉันพูด ... OCD ของฉันเกี่ยวกับสิ่งเหล่านี้)