如何在 NopCommerce 3.8 的现有菜单下的管理面板中添加子菜单?

How can I add a submenu in admin panel under a existing menu in NopCommerce 3.8?

我的问题与此几乎相似 除了一点点变化。有添加菜单的解决方案,像我也想添加菜单,但是在不同的过程中。

目前我正在开发一个关于组合促销优惠的项目。因此,我想在 Promotion 下添加一个子菜单,就像所有其他子菜单一样 image

但我开发的是创建一个名为 Plugins 的单独菜单并在其中添加一个子菜单。像这样image

这是我用来创建该菜单的代码。

public void ManageSiteMap(SiteMapNode rootNode)
        {
            var menuItem = new SiteMapNode()
            {
                SystemName = "Promotion.Combo",
                Title = "Combo Offer",
                ControllerName = "PromotionCombo",
                ActionName = "Configure",
                Visible = true,
                RouteValues = new RouteValueDictionary() { { "area", null } },
            };
            var pluginNode = rootNode.ChildNodes.FirstOrDefault(x => x.SystemName == "Third party plugins");
            if (pluginNode != null)
                pluginNode.ChildNodes.Add(menuItem);
            else
                rootNode.ChildNodes.Add(menuItem);
        }

我想知道我应该从哪个 SystemName 添加这个子菜单?

您可以使用:

public void ManageSiteMap(SiteMapNode rootNode)
{
    var menuItem = new SiteMapNode()
    {
       SystemName = "Promotion.Combo",
       Title = "Combo Offer",
       ControllerName = "PromotionCombo",
       ActionName = "Configure",
       IconClass = "fa-dot-circle-o"
       Visible = true,
       RouteValues = new RouteValueDictionary() { { "area", null } },
    };

    var pluginNode = rootNode.ChildNodes.FirstOrDefault(x => x.SystemName == "Promotions");
        if (pluginNode != null)
            pluginNode.ChildNodes.Add(menuItem);
        else
            rootNode.ChildNodes.Add(menuItem);
}

您查找的系统名称是

Promotions

更新的答案表明您可以使用 menuItem 对象中的 IconClass 在菜单项名称前面添加图标。

此外,为了完整起见,不要忘记将 IAdminMenuPlugin 添加到您的插件 cs 文件中,如下所示:

public class MyCustomPlugin : BasePlugin, IAdminMenuPlugin