如何在页面上创建localNav样式选项卡式布局

时间:2013-11-28 13:48:42

标签: c# navigation orchardcms tabbed

我希望有一个包含两个标签的页面,我可以看到如何使用LocalNav()在AdminMenu.cs中执行此操作但是我需要在第三级项目上执行此操作。

我的网页结构是

管理员菜单

  • 我的模块
    • 内容项目1
      • Tab 1
      • Tab 2
    • 内容项目2
      • Tab 1
      • Tab 2

我无法显示这些内容,因为它似乎只支持关闭“my module”链接,而不是较低级别的链接。

是否有其他方法可以在“内容项目1”和“内容项目2”页面上显示选项卡式界面?

1 个答案:

答案 0 :(得分:0)

我不相信有一种方法可以单独使用Orchard的导航提供商。我做了类似的事情,但我必须分别处理第三级,并自己从我自己的控制器实现菜单UI。

您仍然需要在模块的导航提供程序中添加第三级,因为这将正确标记LHS菜单和选项卡选项。有点像:

namespace Company.MyModule {
    public class TileSortAdminMenu : INavigationProvider {

        private Localizer T { get; set; }

        public string MenuName { get { return "admin"; } }

        public void GetNavigation(NavigationBuilder builder) {

            builder
                .AddImageSet("mymodule")
                .Add(T("My Module"), "5", menu => menu
                    .LinkToFirstChild(true)
                    .Add(T("Content Item 1"), "1", item => item
                        .LocalNav()
                        .LinkToFirstChild(true)
                        .Add(T("Tab 1"), "1", tab => tab
                            .LocalNav()
                            .Action("Index", "MyModuleAdmin", new { area = "Company.MyModule"})
                        )
                        .Add(T("Tab 2"), "2", tab => tab
                            .LocalNav()
                            .Action("Tab2", "MyModuleAdmin", new { area = "Company.MyModule"})
                        )
                    )
                    .Add(T("Content Item 2"), "2", item => item
                        .LocalNav()
                        .LinkToFirstChild(true)
                        .Add(T("Tab 1"), "1", tab => tab
                            .LocalNav()
                            .Action("ContentItem2Tab1", "MyModuleAdmin", new { area = "Company.MyModule"})
                        )
                        .Add(T("Tab 2"), "2", tab => tab
                            .LocalNav()
                            .Action("ContentItem2Tab2", "MyModuleAdmin", new { area = "Company.MyModule"})
                        )
                    )
                );
        }
    }
}

在您的视图中,您可以使用以下内容来管理Orchard的样式:

<ul class="localmenu localmenu-submenu">
    <li class="selected"><a href="@Url.Action("Index", "MyModuleAdmin", new { area = "Company.MyModule"})">Tab 1</a<</li>
    <li><a href="@Url.Action("Tab2", "MyModuleAdmin", new { area = "Company.MyModule"})">Tab 2</a></li>
</ul>

localmenu-submenu是您自己的样式调整的样式挂钩,并且您将类selected添加到您正在查看的任何标签中。

或者,根据您要实现的目标,您可以实现jQuery UI的Tabs(可通过Orchard.jQuery资源清单获得),并只更新样式以查看Orchard-y。