Вертикальная навигация. Как сохранить статичность содержимого меню навигации даже на дочерних страницах? - PullRequest
0 голосов
/ 26 апреля 2019

Мы используем Sitefinity 11 и MVC. Мы пытаемся использовать только один шаблон для основных заголовочных страниц, которые находятся прямо под корнем сайта. В этом шаблоне мы намереваемся использовать вертикальную панель навигации (используя включенный виджет Sitefinity navbar, настроенный на вертикальное представление, его Bootstrap 4), который будет располагаться в левой части страницы.

Мы хотим, чтобы навигация отображала самую верхнюю страницу этого раздела (которую мы включили, установив «ShowParentPage» в True, и отображая дочерние страницы до 3-х уровней глубиной (включая верхнюю страницу ... Дочерние страницы). Хитрость заключается в том, что мы хотели бы, чтобы он оставался прежним, даже когда пользователь переходит на одну из дочерних страниц и всегда показывает этот верхний уровень с двумя подуровнями. Для встроенных функций нет это в настоящее время, и ближайший вариант для использования - установить виджет так, чтобы он всегда показывал текущую страницу и дочерние элементы.

Под главной страницей будет только три или четыре страницы верхнего уровня, поэтому, если нажать толчок, мы могли бы создать разные шаблоны для каждого раздела сайта, а затем просто установить виджет навигации на всегда по умолчанию используется верхняя страница этого раздела, которая является еще одним встроенным параметром в виджете навигации, но, похоже, это приведет к дублированию усилий.

Я пытался изменить HTML-представление NavigationView.Vertical бритвы для достижения желаемого результата, но мне не повезло. Я думаю, что если бы я мог проверить, имеет ли родительская страница или родительская родительская страница определенный заголовок страницы (который должен оставаться довольно статичным с течением времени, хотя да, я знаю, что это может привести к риску имени страницы изменено), затем установите его в качестве активного узла, а затем сделайте так, чтобы код делал то, что он уже делает, то есть просматривал дочерние страницы и записывал их в меню навигации.

Это фрагмент кода по умолчанию в представлении:

@model Telerik.Sitefinity.Frontend.Navigation.Mvc.Models.INavigationModel

<div class="@Model.CssClass">
    <nav>

            <ul class="nav flex-column navbar-child-custom">
                @foreach (var node in Model.Nodes)
                {
                    <li class="nav-item">
                        <a class="nav-link @GetClass(node)" href="@node.Url" target="@node.LinkTarget">@node.Title</a>
                        @RenderSubLevelsRecursive(node)
                    </li>

                }
            </ul>
    </nav>
</div>

Если бы я мог каким-то образом установить этот узел в цикле for-each на самую верхнюю родительскую страницу, то я мог бы просто позволить этому сделать свое дело, и это сработало бы, но я не знаю подходящего способа сделать это ,

Любая помощь или предложения очень ценятся!

РЕДАКТИРОВАТЬ: я приложил несколько изображений, которые показывают иерархию страниц (которые вы можете видеть как «Члены, пенсионеры и работодатели» в качестве трех страниц верхнего уровня, на которые я ссылаюсь), выбор, используемый в шаблоне, а затем также результат на странице, когда вы находитесь на странице участников, а также то, что происходит с левой навигационной панелью, когда вы находитесь на странице пенсий, которая находится только в разделе «Участники». В этом случае мы хотим, чтобы навигация оставалась такой же, как если бы вы были на странице участников.

Иерархия

Выбор

Просмотр страницы участников

Просмотр страницы пенсии (дочерний элемент)

1 Ответ

1 голос
/ 27 апреля 2019

Я думаю, что вы должны использовать опцию "Все страницы под определенной страницей" и выбрать страницу участников.

Здесь всегда будут отображаться дочерние страницы страницы участников.

Если для параметра ShowParentPage установлено значение True (как у вас уже есть), также будет отображаться страница «Участники».

...