2017-01-11 7 views
1

제 질문은 약간 변경된 것을 제외하고는 question과 거의 비슷합니다. 메뉴를 추가하기위한 솔루션이 있습니다. 메뉴를 추가하고 싶지만 다른 프로세스에 추가하고 싶습니다.관리자 패널에 NopCommerce 3.8의 기존 메뉴 하위 메뉴를 추가하려면 어떻게해야합니까?

현재 콤보 프로모션 코드로 프로젝트를 개발 중입니다. 그래서 그러므로 나는 다른 모든 하위 메뉴 image

그러나 나는 Plugins라는 별도의 메뉴를 만들고 거기에 하위 메뉴를 추가 개발처럼 Promotion에서 하위 메뉴를 추가하고 싶습니다. 이와 같이 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이 서브 메뉴를 추가해야합니까?

+0

은 [이] 한 번 봐 (http://stackoverflow.com/a를 취할 것입니다/41519284/2534646) 도움이 되길 바랍니다. – Curiousdev

+0

내 질문을 철저히 읽었습니까 ?? 나는이 질문을 나의 질문의 시작 부분에서 언급했다. 확인해주십시오. –

답변

5

당신은 사용할 수 있습니다 : 당신이보고

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 == "Promotions"); 
     if (pluginNode != null) 
      pluginNode.ChildNodes.Add(menuItem); 
     else 
      rootNode.ChildNodes.Add(menuItem); 
} 

시스템 이름

프로모션

+0

안녕하세요 @Div. 코멘트 주셔서 감사하지만 나는 동의해야합니다. NopCommerce는 관리 페이지가 렌더링 될 때마다 각 활성 플러그인의 ManageSiteMap 메소드를 재평가합니다. 따라서 플러그인이 사용 중지 된 (제거 된) 메뉴 항목은 요청에 대해 다시 추가되지 않았기 때문에 사라집니다. 또한 성능을 위해 ManageSiteMap에서 비연품 코드를 작성하지 않도록주의하십시오. 그렇지 않으면 관리 측 페이지 렌더링이 더 느려집니다. BTW는 내 친구를 편집 해 주셔서 고맙습니다 :) –

+0

예, 물론입니다. 그것은 사라졌습니다. 또한 리버스 엔지니어링을 위해 ManageSiteMap을 디버깅하고 플러그인로드 메커니즘을 확인했습니다. 관심있는 사람은 Nop.Web 프로젝트에서 Admnistration/Views/Shared/menu.cshtml 관리자 메뉴를 생성하는 코드를 작성하십시오. –

+0

당신은 환영합니다! –