Tôi biết đây là một câu hỏi cũ với rất nhiều câu trả lời, hầu hết trong số họ đề nghị chỉnh sửa mẫu menu nhưng điều đó không hiệu quả với tôi. Không cần phải giải thích tại sao, giả sử tôi là một chút OCD về việc làm mọi thứ theo cách "đúng".
Câu hỏi này có thể phục vụ như là tài liệu cho những người khác cần. Ở đây đi.
Bắt đầu với Magento 1.7, menu trên cùng được tạo bằng một sự kiện : page_block_html_topmenu_gethtml_before
. Điều này được sử dụng bởi các Mage_Catalog
mô-đun để thêm các thể loại. Tôi muốn sử dụng nó. Đối với điều này, tôi đã tạo một người quan sát trong mô-đun của mình như thế này:
<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>
Trong Observer.php
lớp tôi có
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;
}
Người quan sát của tôi có một số mã khác thêm tất cả các nhãn hiệu dưới dạng các mục con của Brands
menu nhưng không cần điều đó ở đây.
Điều này hoạt động hoàn hảo và thêm một menu Brands
như một mục cuối cùng trong menu.
Vấn đề là tôi muốn đây là menu đầu tiên và người quan sát của tôi được gọi sau khi người quan sát trong Mage_Catalog
đó thêm các danh mục. Vì không có cách nào (không phải tôi biết) để sắp xếp thứ tự của người quan sát về một sự kiện ... Tôi có một vấn đề
[EDIT]
Như @Benmark đề nghị tôi đã thực hiệnMage_Catalog
mô-đun phụ thuộc vào mô-đun của tôi và bây giờ mục menu của tôi là đầu tiên trong danh sách. Nhưng tôi vẫn phải thêm các menu giữa các danh mục và cuối cùng. Tạo một mô-đun mới có thể sẽ giải quyết vấn đề với các mục ở cuối menu, nhưng tôi vẫn gặp vấn đề với các mục giữa các danh mục,
[/ EDIT]
Vì vậy, về cơ bản câu hỏi của tôi tiếp tục là " (Làm thế nào) tôi có thể di chuyển xung quanh con các nút của a Varien_Data_Tree_Node
trong một Varien_Data_Tree
đối tượng? "
Vui lòng không đề xuất thêm Brands
danh mục đầu tiên trong cây danh mục. Đây không phải là một lựa chọn (như tôi đã nói ... OCD của tôi về những điều này).