Как я могу создать макет с вкладками в стиле localNav на странице

Я хочу иметь страницу с двумя вкладками, и я вижу, как это сделать в AdminMenu.cs с помощью LocalNav(), НО мне нужно это для элемента третьего уровня.

Моя структура страницы

Меню администратора

  • My module
    • Content Item 1
      • Tab 1
      • Вкладка 2
    • Content Item 2
      • Tab 1
      • Вкладка 2

Я не могу заставить их отображаться, поскольку кажется, что они поддерживают только вкладки со ссылкой «мой модуль», а не ссылки более низкого уровня.

Есть ли другой способ отобразить интерфейс с вкладками на моих страницах «Элемент контента 1» и «Элемент контента 2»?


person zanther    schedule 28.11.2013    source источник
comment
Не могли бы вы пояснить свой вопрос? Трудно понять, что вы пытаетесь сделать.   -  person Bertrand Le Roy    schedule 30.11.2013
comment
@ Дженнет, как дела?   -  person justrhysism    schedule 04.03.2014
comment
в конце концов я перенастроил макет своей страницы, чтобы мне не требовался третий уровень с использованием вкладок. Извините за задержку с ответом, мне кажется, что уведомления не приходят!   -  person zanther    schedule 25.03.2014


Ответы (1)


Я не верю, что есть способ сделать это, используя только навигационного провайдера Orchard. Я сделал что-то подобное, но мне пришлось обрабатывать третичный уровень отдельно и самому реализовать пользовательский интерфейс меню из моего собственного контроллера.

Вам все равно нужно будет добавить третий уровень в навигационный провайдер вашего модуля, так как это будет правильно помечать меню 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 (доступные через манифест ресурса Orchard.jQuery) и просто обновить стиль, чтобы он выглядел как Orchard.

person justrhysism    schedule 10.12.2013