2017-01-06 6 views
3

Pluralsightが提供するチュートリアルからNopcommerceを学習しています。NopCommerce 3.8の管理パネルにサブメニューを追加

管理パネルでプラグインのメニューを追加する場合は、バージョン3.5と3.8では異なります。 public SiteMapNode BuildMenuItem() の代わりにpublic void ManageSiteMap(SiteMapNode rootNode)を使用する必要があります。

NopCommerce How to add a menu item into the administration area from a pluginで提供されているドキュメントに従ってManageSiteMapを使用しましたが、そのコードを使用するとサブメニューではなく親メニューのみを表示できました。

これは私のコードです:

public void ManageSiteMap(SiteMapNode rootNode) 
{ 
     var menuItem = new SiteMapNode() 
     { 
      Title = "Promo Slider", 
      ControllerName = "PromoSlider", 
      ActionName = "CreateUpdatePromoSlider", 
      Visible = true, 
      RouteValues = new RouteValueDictionary() { { "area", "admin" } } 
     }; 
     var createUpdate = new SiteMapNode() 
     { 
      SystemName = "Widgets.PromoSlider", 
      Title = "New Sliders", 
      ControllerName = "PromoSlider", 
      ActionName = "CreateUpdatePromoSlider", 
      Visible = true, 
     RouteValues = new RouteValueDictionary() { { "area", null } } 
     }; 

     var manageSlider = new SiteMapNode() 
     { 
      SystemName = "Widgets.PromoSlider", 
      Title = "Manage Sliders", 
      ControllerName = "PromoSlider", 
      ActionName = "ManagePromoSliders", 
      Visible = true, 
      RouteValues = new RouteValueDictionary() { { "area", null} } 
     }; 
     menuItem.ChildNodes.Add(createUpdate); 
     menuItem.ChildNodes.Add(manageSlider); 

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

しかし、それは示してすべてが、私はこの

プラグイン
       のように見せたいだけ enter image description here

親メニューです| ---->プロモーションスライダー
            | ----------->新スライダー
            | ----------->管理スライダー

誰も私のコードで私を助けてもらえますか?

答えて

3

あなたのコードは、いくつかの修正が必要になります。

  1. menuItemは、親ノードである、RouteValuesを必要としません。
  2. 親ノードは、上の変更を行った後SystemName

を必要とする基本的には、親ノードは次のようになりする必要があります。今はね、子ノードに来て、

var menuItem = new SiteMapNode 
{ 
    Title = "Promo Slider", 
    Visible = true, 
    SystemName = "Widgets.PromoSlider", 
}; 

オーケー毎回新しいノードを作成します。代わりに親ノードに追加します!だから、

var createUpdate = new SiteMapNode() 
var manageSlider = new SiteMapNode() 

、それを変更:プラグインノードに親ノードを追加し、最後には

menuItem.ChildNodes.Add(new SiteMapNode 
{ 
    SystemName = "Widgets.PromoSlider", 
    Title = "New Sliders", 
    ControllerName = "PromoSlider", 
    ActionName = "CreateUpdatePromoSlider", 
    Visible = true, 
    RouteValues = new RouteValueDictionary() { { "area", null } } 
}); 

menuItem.ChildNodes.Add(new SiteMapNode 
{ 
    SystemName = "Widgets.PromoSlider", 
    Title = "Manage Sliders", 
    ControllerName = "PromoSlider", 
    ActionName = "ManagePromoSliders", 
    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); 

はすべてやりました!それを実行すると、必要に応じて表示されます。

enter image description here

+1

ありがとうございました。それは動作します – Avinash

+0

@Div、私の質問はほぼ同じです、私はこのサブメニューをプロモーションの下に追加したい、どうすればいいですか? – gdmanandamohon

+1

こんにちは@Div。それはできます。 http:// stackoverflowを確認してください。com/questions/41583629/no-add-a-add-a-submenu-in-admin-panel-under-a-nopcommerce-3-/41813251#41813251 –

関連する問題