我们正在使用Sitefinity 11和MVC。我们正试图仅使用一个模板用于位于网站根目录下的主要标题页面。在该模板上,我们打算使用垂直导航栏(使用随附的Sitefinity导航栏小部件设置为“垂直”视图,其Bootstrap 4)将位于页面左侧。
我们希望导航显示该部分的顶部页面(已通过将“ ShowParentPage”设置为True启用了此页面,并显示了最多3层的子页面(包括首页...因此,子页面和大页面子页面)。棘手的是,我们希望它保持不变,即使用户导航到其中一个子页面并始终在两个子级别中显示该顶级页面也没有内置功能。当前,最接近的选择是将小部件设置为始终显示当前页面和子页面,但这又导致将当前页面设置为顶部。
在首页下,这些顶级页面将只有三四个,所以如果一推再推,我们可以为网站的每个部分创建一个不同的模板,然后将导航小部件设置为始终默认为该部分的首页,这是导航小部件上的另一个内置选项,但这似乎会导致重复的工作。
我一直在尝试修改NavigationView.Vertical razor html视图以实现我们想要的结果,但是我没有运气。我的想法是,如果我可以检查父页面或父页面的父页面是否具有特定的页面标题(随着时间的流逝,它应该保持静态,尽管是的,我知道这可能导致页面名称风险)更改),然后将其设置为活动节点,然后让代码执行已完成的工作,即遍历子页面并将其写入导航菜单。
这是视图上默认代码的片段:
@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循环中的那个节点设置为最上层的父页面,那么我就可以让它完成它并且可以工作,但是我不知道执行此操作的正确方法。
任何帮助或建议都将不胜感激!
编辑:我已附加了一些图像,这些图像显示了页面层次结构(您可以看到成员,退休人员和雇主是我所指的三个顶级页面),模板中使用的选择,然后当您在会员页面上时,页面上的结果也是如此,然后当您在会员下方的退休金页面上时,左侧导航会发生什么。在这种情况下,我们希望导航保持不变,就像您在“成员”页面上一样。
答案 0 :(得分:1)
我认为您应该使用“特定页面下的所有页面”选项,然后选择“成员”页面。
这将始终显示“成员”页面的子页面。
将ShowParentPage设置为True(您已经拥有)也将显示“成员”页面。