簡體   English   中英

Magento 2 WordPress集成(FishPig擴展名)-Magento中的添加菜單

[英]Magento 2 WordPress Integration (FishPig Extension) - Add menu in Magento

我使用了magento 2的fishPig Magento WordPress集成。在第一個版本中,建立了在magento中添加菜單的功能。 在第二版中,它不完整,開發人員將我指向Menu.php模型,以實現此目的。 需要一些幫助的人,以便指出正確的方向。 有人遇到同樣的問題嗎?

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

看一下Model / Menu.php。 從那以后,我必須進行構建,以便在前端獲得WP菜單。 不幸的是,沒有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;
}

如果您不關心使用什么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結構構建菜單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM