首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magento 2 WordPress集成(FishPig扩展)-在Magento中添加菜单

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

Stack Overflow用户
提问于 2018-01-24 21:46:00
回答 1查看 758关注 0票数 1

我使用fishPig Magento WordPress集成在magento 2中。在第一个版本中,在magento中添加菜单的功能已经建立起来。在第二个版本中,它是不完整的,开发人员向我介绍了模型Menu.php,以实现这一点。我需要一些帮手,才能找到正确的方向。有人也有同样的问题?

扩展名:https://fishpig.co.uk/magento-2/wordpress-integration/

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-25 16:52:55

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

下面的代码将加载菜单的数组。此数组包含构建菜单所需的所有信息。然后,您可以递归地遍历该数组,以使用所需的HTML结构构建菜单。如果要将此菜单添加到现有菜单中,这将非常有用,因为它允许您与现有菜单使用的HTML结构相匹配。

代码语言:javascript
复制
// 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结构,你可以使用下面的代码块:

代码语言:javascript
复制
\FishPig\WordPress\Block\Sidebar\Widget\NavMenu

如果你仔细查看这个块的代码,你会发现它会检查数据项'nav_menu‘中的菜单ID,你可以通过XML设置(如果你是通过XML创建的)或者使用PHP创建整个代码:

代码语言:javascript
复制
$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结构中构建菜单。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48424011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档