我正在尝试使用剃刀宏在umbraco中创建一个剃刀菜单。我按照umbraco教程创建了一个剃刀菜单:
它适用于我的前三页,但后来我想添加另一个,但页面没有显示在我的菜单中。我的网页有以下结构:
开始,日历和照片显示在我的菜单中,但新闻页面没有显示。这个结构是正确的还是我必须创建一个“主页”页面并将我的所有页面放在那里?
这是我的剃刀宏代码:
@inherits umbraco.MacroEngines.DynamicNodeContext
<nav>
<ul>
@{ var homeNode = Model.AncestorOrSelf("Home"); }
<li><a href="@homeNode.Url" class="@Library.If(homeNode.Id == Model.Id, "selected", "")">@homeNode.Name</a></li>
@foreach (var page in homeNode.Children.Where("Visible"))
{
var isSelected = false;
if (Model.Id == page.Id || (Model.Parent != null && Model.Parent.Id == page.Id && Model.NodeTypeAlias != "Textpage"))
{
isSelected = true;
}
<li>
<a href="@page.Url" class="@Library.If(isSelected, "selected", "")">@page.Name</a>
<!-- If the page has child nodes (2nd level) that are visible and docTypeAlias is Textpage (textpages) -->
@if (page.Children.Where("Visible").Count() > 0)
{
<ul>
@foreach (var childPage in page.Children.Where("Visible"))
{
<li>
<a href="@childPage.Url" class="@Library.If(childPage.Id == Model.Id, "selected", "")">@childPage.Name</a>
</li>
}
</ul>
}
</li>
}
</ul>
</nav>
答案 0 :(得分:1)
理想情况下,您需要一个带有别名“Home”的doc类型的页面,因为您通过在此处获取该页面来定义启动节点/ var,
var homeNode = Model.AncestorOrSelf("Home");
然后在你获得这个homeNode的所有子页面后,所以你的所有结构都应该是
content
- Home
- start
- calender
- frontpage sliders
- fotos
- news