Example #1
0
 /**
  * {@inheritdoc}
  *
  * @param EventObserver $observer
  */
 public function execute(EventObserver $observer)
 {
     /** @var \Magento\Framework\Data\Tree\Node $menu */
     $menu = $observer->getData('menu');
     $categories = $this->categoryCollectionFactory->create()->addAttributeToSelect(['name', 'url_key'])->excludeRoot()->addVisibilityFilter();
     $tree = $categories->getTree();
     $rootNode = new TreeNode(['id' => 'blog-node-root', 'name' => $this->config->getMenuTitle(), 'url' => $this->config->getBaseUrl()], 'id', $menu->getTree(), null);
     $menu->addChild($rootNode);
     foreach ($tree as $category) {
         if (isset($tree[$category->getParentId()])) {
             $parentNode = $tree[$category->getParentId()]->getData('node');
         } else {
             $parentNode = $rootNode;
         }
         $node = new TreeNode(['id' => 'blog-node-' . $category->getId(), 'name' => $category->getName(), 'url' => $category->getUrl()], 'id', $menu->getTree(), $parentNode);
         if ($parentNode) {
             $parentNode->addChild($node);
         } else {
             $menu->addChild($node);
         }
         $category->setData('node', $node);
     }
 }