I am in this world but I like to learn.
i have a website in magento 2
(http://www.contornodamoda.com.br) ... it was cute until I decided to install an extension whose name is easy megamenu now I have no idea what to do .. I'm 2 days already trying in every way possible .. Can someone help me please !!! and I don't even know which file I send you to look ....
I would love to have this extension
I always create the folder di and then it goes away it happens with the permissions too .. it comes back!!!
Sorry about my terrible English
PS: var/generation 775 app/etc 777 pub/static 777
i am very newb
error in compile:
https://i.stack.imgur.com/XftXP.png
error in all site
https://i.stack.imgur.com/1ER9R.png
error in admin / category
https://i.stack.imgur.com/cWKMb.png
Report :
https://i.stack.imgur.com/NlvCV.png
logsystem
https://i.stack.imgur.com/MVwSM.png
Topmenu.php
<?php /** * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ namespace Ibnab\MegaMenu\Block\Html; use Magento\Framework\DataObject\IdentityInterface; use Magento\Framework\View\Element\Template; use Magento\Framework\Data\TreeFactory; use Magento\Framework\Data\Tree\Node; use Magento\Framework\Data\Tree\NodeFactory; use Magento\Theme\Block\Html\Topmenu; use Magento\Cms\Model\BlockRepository; use Magento\Catalog\Model\CategoryFactory; use Magento\Framework\Registry; use Magento\Customer\Setup\CustomerSetupFactory; /** * Html page top menu block */ class Topmega extends Topmenu { /** * Cache identities * * @var array */ protected $identities = []; /** * Top menu data tree * * @var \Magento\Framework\Data\Tree\Node */ protected $_menu; /** * Core registry * * @var Registry */ protected $registry; /** * @var \Magento\Catalog\Model\CategoryFactory */ protected $categoryFactory; /** * @var \Magento\Cms\Model\Template\FilterProvider */ protected $_filterProvider; /** * Store manager * * @var \Magento\Store\Model\StoreManagerInterface */ protected $_storeManager; /** * Block factory * * @var \Magento\Cms\Model\BlockFactory */ protected $_blockFactory; /** * Core registry * * @var \Magento\Framework\Registry */ protected $coreRegistry = null; /** * @var \Ibnab\CategoriesUrl\Helper\Data */ protected $dataHelper; /** * @param Template\Context $context * @param NodeFactory $nodeFactory * @param TreeFactory $treeFactory * @param array $data */ public function __construct(CustomerSetupFactory $customerSetupFactory, Template\Context $context, NodeFactory $nodeFactory, TreeFactory $treeFactory, CategoryFactory $categoryFactory, \Magento\Cms\Model\Template\FilterProvider $filterProvider, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Cms\Model\BlockFactory $blockFactory, Registry $registry, \Ibnab\MegaMenu\Helper\Data $dataHelper, array $data = [] ) { parent::__construct($context, $nodeFactory, $treeFactory, $data); $this->categoryFactory = $categoryFactory; $this->_filterProvider = $filterProvider; $this->_storeManager = $storeManager; $this->_blockFactory = $blockFactory; $this->coreRegistry = $registry; $this->dataHelper = $dataHelper; $this->_menu = $this->getMenu(); $this->customerSetupFactory = $customerSetupFactory; } /** * Prepare Content HTML * * @return string */ public function getBlockHtml($id) { $blockId = $id; $html = ''; if ($blockId) { $storeId = $this->_storeManager->getStore()->getId(); /** @var \Magento\Cms\Model\Block $block */ $block = $this->_blockFactory->create(); $block->setStoreId($storeId)->load($blockId); if ($block->isActive()) { $html = $this->_filterProvider->getBlockFilter()->setStoreId($storeId)->filter($block->getContent()); } } return $html; } /** * Add sub menu HTML code for current menu item * * @param \Magento\Framework\Data\Tree\Node $child * @param string $childLevel * @param string $childrenWrapClass * @param int $limit * @return string HTML code */ protected function _addSubMenu2($child, $childLevel, $childrenWrapClass, $limit) { if ($this->dataHelper->allowExtension()) { $html = ''; if (!$child->hasChildren()) { return $html; } $colStops = null; if ($childLevel == 0 && $limit) { $colStops = $this->_columnBrake($child->getChildren(), $limit); } $category = ""; if ($childLevel == 0) { $html .= '<ul>'; $category = $this->coreRegistry->registry('current_categry_top_level'); if ($category != null) { if ($category->getUseStaticBlock()) { if ($category->getUseStaticBlockTop() && $category->getStaticBlockTopValue() != "") { $html .= '<div class="topstatic" >'; $html .= $this->getBlockHtml($category->getStaticBlockTopValue()); $html .= '</div>'; } if ($category->getUseStaticBlockLeft() && $category->getStaticBlockLeftValue() != "") { $html .= '<div class="leftstatic" >'; $html .= $this->getBlockHtml($category->getStaticBlockLeftValue()); $html .= '</div>'; } } if ($category->getUseLabel()) { if ($category->getLabelValue() != "") { $child->setData('name', $category->getLabelValue()); } } } if (!$category->getDisabledChildren() && $childLevel == 0) { $html .= $this->_getHtml($child, $childrenWrapClass, $limit, $colStops); } if ($category != null) { if ($category->getUseStaticBlock()) { if ($category->getUseStaticBlockRight() && $category->getStaticBlockRightValue() != "") { $html .= '<div class="rightstatic" >'; $html .= $this->getBlockHtml($category->getStaticBlockRightValue()); $html .= '</div>'; } if ($category->getUseStaticBlockBottom() && $category->getStaticBlockBottomValue() != "") { $html .= '<div class="bottomstatic" >'; $html .= $this->getBlockHtml($category->getStaticBlockBottomValue()); $html .= '</div>'; } } } $html .= '<div class="bottomstatic" ></div>'; $html .= '</ul>'; } else { $html .= '<ul>'; $html .= $this->_getHtml($child, $childrenWrapClass, $limit, $colStops); $html .= '</ul>'; } return $html; } else { return parent::_addSubMenu($child, $childLevel, $childrenWrapClass, $limit); } } /** * Returns array of menu item's classes * * @param \Magento\Framework\Data\Tree\Node $item * @return array */ protected function _getMenuItemClasses(\Magento\Framework\Data\Tree\Node $item) { $classes = []; $level = 'level' . $item->getLevel(); $classes[] = $level; $position = $item->getPositionClass(); $positionArray = explode("-", $position); $classes[] = $position; if ($item->getIsFirst()) { $classes[] = 'first'; } if ($item->getIsActive()) { $classes[] = 'active'; } elseif ($item->getHasActive()) { $classes[] = 'has-active'; } if ($item->getIsLast()) { $classes[] = 'last'; } if ($item->getClass()) { $classes[] = $item->getClass(); } if ($item->hasChildren()) { $classes[] = 'parent'; } if ($level == 'level1' && count($positionArray) == 3) { $category = $this->coreRegistry->registry('current_categry_top_level'); if(!is_null($category)){ $classes[] = $category->getLevelColumnCount(); } } return $classes; } /** * Recursively generates top menu html from data that is specified in $menuTree * * @param \Magento\Framework\Data\Tree\Node $menuTree * @param string $childrenWrapClass * @param int $limit * @param array $colBrakes * @return string * * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ protected function _getHtml( \Magento\Framework\Data\Tree\Node $menuTree, $childrenWrapClass, $limit, $colBrakes = [] ) { $html = ''; $children = $menuTree->getChildren(); $parentLevel = $menuTree->getLevel(); $childLevel = $parentLevel === null ? 0 : $parentLevel + 1; $counter = 1; $itemPosition = 1; $childrenCount = $children->count(); $parentPositionClass = $menuTree->getPositionClass(); $itemPositionClassPrefix = $parentPositionClass ? $parentPositionClass . '-' : 'nav-'; foreach ($children as $child) { $child->setLevel($childLevel); $child->setIsFirst($counter == 1); $child->setIsLast($counter == $childrenCount); $child->setPositionClass($itemPositionClassPrefix . $counter); $outermostClassCode = ''; $outermostClass = $menuTree->getOutermostClass(); if ($childLevel == 0 && $outermostClass) { $outermostClassCode = ' class="' . $outermostClass . '" '; $child->setClass($outermostClass); } if(is_array($colBrakes) || is_object($colBrakes)){ if (count($colBrakes) && $colBrakes[$counter]['colbrake']) { $html .= '</ul></li><li class="column"><ul>'; } } $html .= '<li ' . $this->_getRenderedMenuItemAttributes($child) . '>'; if ($child->getCategoryIsLink()) { $html .= '<a href="' . $child->getUrl() . '" ' . $outermostClassCode . '>'; }else{ $html .= '<a ' . $outermostClassCode . '>'; } $html .= '<span>' . $this->escapeHtml( $child->getName() ) . '</span>'; $html .= '</a>'; $html .= $this->_addSubMenu( $child, $childLevel, $childrenWrapClass, $limit ) . '</li>';; $itemPosition++; $counter++; } if(is_array($colBrakes) || is_object($colBrakes)){ if (count($colBrakes) && $limit) { $html = '<li class="column"><ul>' . $html . '</ul></li>'; } } return $html; } /** * Recursively generates top menu html from data that is specified in $menuTree * * @param \Magento\Framework\Data\Tree\Node $menuTree * @param string $childrenWrapClass * @param int $limit * @param array $colBrakes * @return string * * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ protected function _getHtml2( \Magento\Framework\Data\Tree\Node $menuTree, $childrenWrapClass, $limit, $colBrakes = [] ) { if ($this->dataHelper->allowExtension()) { $html = ''; $children = $menuTree->getChildren(); $parentLevel = $menuTree->getLevel(); $childLevel = $parentLevel === null ? 0 : $parentLevel + 1; $counter = 1; $itemPosition = 1; $childrenCount = $children->count(); $parentPositionClass = $menuTree->getPositionClass(); $itemPositionClassPrefix = $parentPositionClass ? $parentPositionClass . '-' : 'nav-'; foreach ($children as $child) { $child->setLevel($childLevel); $child->setIsFirst($counter == 1); $child->setIsLast($counter == $childrenCount); $child->setPositionClass($itemPositionClassPrefix . $counter); $outermostClassCode = ''; $outermostClass = $menuTree->getOutermostClass(); if ($childLevel == 0 && $outermostClass) { $outermostClassCode = ' class="' . $outermostClass . '" '; $child->setClass($outermostClass); } if ($childLevel == 0) { $arrayId = explode('-', $child->_getData('id')); $category = null; if (isset($arrayId[2])) { $id = $arrayId[2]; $category = $this->categoryFactory->create(); $category->load($id); $this->coreRegistry->unregister('current_categry_top_level'); $this->coreRegistry->register('current_categry_top_level', $category); } } if(is_array($colBrakes) || is_object($colBrakes)){ if (count($colBrakes) && $colBrakes[$counter]['colbrake']) { $html .= '</ul></li><li><ul>'; } } $html .= '<li>'; if ($childLevel == 0) { $name = $child->getName(); $category = $this->coreRegistry->registry('current_categry_top_level'); if ($category != null) { if ($category->getUseLabel()) { if ($category->getLabelValue() != "") { $name = $category->getLabelValue(); } else { $name = $child->getName(); } } else { $name = $child->getName(); } } if ($category->getCategoryIsLink()) { $html .= '<a href="' . $child->getUrl() . '" ' . $outermostClassCode . '>'; }else{ $html .= '<a ' . $outermostClassCode . '>'; } $html .= '<span>' . $this->escapeHtml( $name ) . '</span>'; $html .= '</a>'; $html .= $this->_addSubMenu2($child, $childLevel, $childrenWrapClass, $limit ) . '</li>'; } else { $html .= '<a href="' . $child->getUrl() . '" ' . $outermostClassCode . '><span>' . $this->escapeHtml( $child->getName() ) . '</span></a>' . $this->_addSubMenu2( $child, $childLevel, $childrenWrapClass, $limit ) . '</li>'; } $itemPosition++; $counter++; } if(is_array($colBrakes) || is_object($colBrakes)){ if (count($colBrakes) && $limit) { $html = '<li class="column"><ul>' . $html . '</ul></li>'; } } return $html; } else { return parent::_getHtml( $menuTree, $childrenWrapClass, $limit, $colBrakes ); } } /** * Get top menu html * * @param string $outermostClass * @param string $childrenWrapClass * @param int $limit * @return string */ public function getHtml($outermostClass = '', $childrenWrapClass = '', $limit = 0) { if ($childrenWrapClass == "mega") { $childrenWrapClass = "submenu"; $this->_eventManager->dispatch( 'page_block_html_topmenu_gethtml_before', ['menu' => $this->_menu, 'block' => $this] ); $this->_menu->setOutermostClass($outermostClass); $this->_menu->setChildrenWrapClass($childrenWrapClass); $html = $this->_getHtml2($this->_menu, $childrenWrapClass, $limit); $transportObject = new \Magento\Framework\DataObject(['html' => $html]); $this->_eventManager->dispatch( 'page_block_html_topmenu_gethtml_after', ['menu' => $this->_menu, 'transportObject' => $transportObject] ); $html = $transportObject->getHtml(); return $html; } else { return parent::getHtml($outermostClass, $childrenWrapClass, $limit); } } public function allowExtension() { return $this->dataHelper->allowExtension(); } }
Hello @lelebr
Follow below shared steps:
rm -rf generated/code/* chmod -R 0777 var/ pub/ generated/ php bin/magento setup:di:compile
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy
php bin/magento cache:flush
Try it once and let me know if any luck. Thanks
net see directory generated
leandro@contornodamoda2-vm:/var/www/html$ sudo php bin/magento setup:di:compile Compilation was started. Repositories code generation... 1/7 [====>-----------------------] 14% 1 sec 44.0 MiBPHP Fatal error: Uncaught Error: Undefine d constant 'Ibnab\MegaMenu\Block\Html\Topmenu' in /var/www/html/app/code/lbnab/MegaMenu/Block/Html/topmega.php:8 Stack trace: #0 /var/www/html/setup/src/Magento/Setup/Module/Di/Code/Reader/ClassesScanner.php(70): require_once() #1 /var/www/html/setup/src/Magento/Setup/Module/Di/App/Task/Operation/RepositoryGenerator.php(61): Magento\Setup\Module\Di\Code\ Reader\ClassesScanner->getList('/var/www/html/a...') #2 /var/www/html/setup/src/Magento/Setup/Module/Di/App/Task/Manager.php(56): Magento\Setup\Module\Di\App\Task\Operation\Reposito ryGenerator->doOperation() #3 /var/www/html/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php(188): Magento\Setup\Module\Di\App\Task\Manager->pr ocess(Object(Closure), Object(Closure)) #4 /var/www/html/vendor/symfony/console/Symfony/Component/Console/Command/Command.php(257): Magento\Setup\Console\Command\DiComp ileCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #5 /var/www/h in /var/www/html/app/code/lbnab/MegaMenu/Block/Html/topmega.php on line 8 leandro@contornodamoda2-vm:/var/www/html$
Hello @lelebr
Check below shared error:
Fatal error: Uncaught Error: Undefine d constant 'Ibnab\MegaMenu\Block\Html\Topmenu' in /var/www/html/app/code/lbnab/MegaMenu/Block/Html/topmega.php:8
Line: 8 in shared file.
?