I must admit that I am having trouble understanding the category tree/node thing in magento. I have extended the Topmenu
class to build my own supermenu. It works fine except the category children are always sorted by their id instead of the defined sort order.
So I tried to dig into this but I simply cannot wrap my head around how magento actually pulls and organizes the categories from the database. It all boils down to this function:
public function getMenu()
{
if (!$this->_menu) {
$this->_menu = $this->nodeFactory->create(
[
'data' => [],
'idField' => 'root',
'tree' => $this->treeFactory->create()
]
);
}
return $this->_menu;
}
Somehow magento magically comes up with the categories here. Nowhere I see the typical collection which I could understand.
So my question is: can someone please explain to me how this tree/node thing works and how magento pulls the categories from the database? And in addition to that: how can I manipulate it to my needs? As mentioned I need to get the children sorted by sort order instead of their ids.