Ich weiß, dass dies eine alte Frage mit vielen Antworten ist. Die meisten schlagen vor, die Menüvorlage zu bearbeiten, aber das funktioniert bei mir nicht. Es ist nicht nötig zu erklären, warum, sagen wir, ich bin ein bisschen übertrieben, wenn es darum geht, Dinge "richtig" zu machen.
Diese Frage kann als Material für andere Bedürftige dienen. Hier geht.
Beginnend mit Magento 1.7 Das Hauptmenü wird ein Ereignis gebaut werden: page_block_html_topmenu_gethtml_before
. Dies wird vom Mage_Catalog
Modul verwendet, um die Kategorien hinzuzufügen. Ich möchte das nutzen. Dazu habe ich in meinem Modul einen Beobachter angelegt:
<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>
In der Observer.php
Klasse habe ich
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;
}
Mein Beobachter hat einen anderen Code, der alle Marken als Unterpunkte des Brands
Menüs hinzufügt, aber das ist hier nicht erforderlich.
Dies funktioniert perfekt und fügt ein Menü Brands
als letzten Punkt im Menü hinzu.
Das Problem ist, dass ich dies als erstes Menü möchte und mein Beobachter nach dem Beobachter aufgerufen wird Mage_Catalog
, der die Kategorien hinzufügt. Da es keine Möglichkeit gibt (von der ich nichts weiß), die Reihenfolge der Beobachter auf einem Ereignis zu sortieren ... Ich habe ein Problem
[
BEARBEITEN ] Wie @Benmarks vorschlug, habe ich das gemachtMage_Catalog
Modul hängt von meinem Modul ab und jetzt ist mein Menüpunkt der erste in der Liste. Aber ich muss immer noch Menüs zwischen den Kategorien und am Ende hinzufügen. Ein neues Modul anlegen würde das Problem mit den Einzelteilen am Ende des Menüs wahrscheinlich lösen, aber ich habe immer noch ein Problem , mit denen zwischen den Kategorien,
[/ EDIT]
Also im Grunde wieder meine Frage " (Wie) kann ich Kind bewegen Knoten eines Varien_Data_Tree_Node
in einem Varien_Data_Tree
Objekt? "
Bitte schlagen Sie nicht vor, die Brands
als erste Kategorie im Kategoriebaum hinzuzufügen . Dies ist keine Option (wie ich schon sagte ... meine OCD über diese Dinge).