Magento 2 WordPress集成(鱼叉扩展)-在Magento中添加菜单

Magento 2 WordPress集成(鱼叉扩展)-在Magento中添加菜单,magento,magento2,fishpig,Magento,Magento2,Fishpig,我为Magento 2使用fishPig Magento WordPress集成。在第一个版本中,建立了在magento中添加菜单的功能。在第二个版本中,它是不完整的,开发人员向我指出model Menu.php以实现这一点。需要一些帮助的家伙,以便被指向正确的方向。有人有同样的问题吗 分机: 看看Model/Menu.php。从那里开始,我必须建立它,以获得可湿性粉剂菜单在前端。不幸的是,这里没有Menu.php块,我想首先我必须构建这个块,然后xml和phtml模板菜单并不是不完整的,您只是

我为Magento 2使用fishPig Magento WordPress集成。在第一个版本中,建立了在magento中添加菜单的功能。在第二个版本中,它是不完整的,开发人员向我指出model Menu.php以实现这一点。需要一些帮助的家伙,以便被指向正确的方向。有人有同样的问题吗

分机:


看看Model/Menu.php。从那里开始,我必须建立它,以获得可湿性粉剂菜单在前端。不幸的是,这里没有Menu.php块,我想首先我必须构建这个块,然后xml和phtml模板

菜单并不是不完整的,您只是没有正确地检查代码

下面的代码将加载菜单的数组。此数组包含构建菜单所需的所有信息。然后可以递归地循环数组,使用所需的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;
}
如果您查看此块的代码,您将看到它检查数据项“nav_menu”中的菜单ID。您可以通过XML设置此项(如果您通过XML创建块),或者使用PHP创建整个内容:

尽管此解决方案不如原始解决方案好,因为它强制您使用特定的HTML结构。使用第一个解决方案会更好,因为这将允许您使用所需的任何HTML结构。您的主题可能已经有了一个带有CSS规则和JS的菜单,因此您可以使用此方法以正确的HTML结构构建菜单

\FishPig\WordPress\Block\Sidebar\Widget\NavMenu
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$menuBlock = $objectManager->create('FishPig\WordPress\Block\Sidebar\Widget\NavMenuFactory')->create();

$menuId = 3;

echo $menuBlock->setNavMenu($menuId)->toHtml();