我使用fishPig Magento WordPress集成在magento 2中。在第一个版本中,在magento中添加菜单的功能已经建立起来。在第二个版本中,它是不完整的,开发人员向我介绍了模型Menu.php,以实现这一点。我需要一些帮手,才能找到正确的方向。有人也有同样的问题?
扩展名:https://fishpig.co.uk/magento-2/wordpress-integration/
看看Model/Menu.php。从那时起,我必须建立它,以便在前台得到可湿性粉剂菜单。不幸的是,没有Menu.php块,我想首先我必须构建这个块,然后是xml和phtml模板
发布于 2018-01-25 16:52:55
菜单并不完整,您只是没有正确检查代码。
下面的代码将加载菜单的数组。此数组包含构建菜单所需的所有信息。然后,您可以递归地遍历该数组,以使用所需的HTML结构构建菜单。如果要将此菜单添加到现有菜单中,这将非常有用,因为它允许您与现有菜单使用的HTML结构相匹配。
// This uses the object manager
// A better way would be to inject the MenuFactory in your constructor
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$menu = $objectManager->create('FishPig\WordPress\Model\MenuFactory')->create();
$menuId = 3;
if ($menu->load($menuId)->getId()) {
echo sprintf('<pre>%s</pre>', print_r($menu->getMenuTreeArray(), true));
}
else {
echo 'No menu exists in WordPress with an ID of ' . (int)$menuId;
}如果你不关心使用什么HTML结构,你可以使用下面的代码块:
\FishPig\WordPress\Block\Sidebar\Widget\NavMenu如果你仔细查看这个块的代码,你会发现它会检查数据项'nav_menu‘中的菜单ID,你可以通过XML设置(如果你是通过XML创建的)或者使用PHP创建整个代码:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$menuBlock = $objectManager->create('FishPig\WordPress\Block\Sidebar\Widget\NavMenuFactory')->create();
$menuId = 3;
echo $menuBlock->setNavMenu($menuId)->toHtml();不过,这种解决方案不如原始解决方案好,因为它迫使您使用特定的HTML结构。使用第一个解决方案会更好,因为这将允许您使用所需的任何HTML结构。您的主题可能已经有一个带有CSS规则和JS的菜单,所以您可以使用此方法在正确的HTML结构中构建菜单。
https://stackoverflow.com/questions/48424011
复制相似问题