ここでは、Razor ビューエンジンを使用して Umbraco で再帰的なツリー メニュー構造をレンダリングするのに少し助けが必要だと思います。
次のツリー メニュー構造をレンダリングする必要があります。
Page 1
Page 2
Page 3
Page 4
Page 5
Page 6
Page 7
したがって、私がいるときは、親ノードでPage 5
CSS クラスを使用する必要があります: 、および私が立っているノードの CSS クラス。"open"
Page 4
Page 2
Page 1
"active"
メニューのリンクをクリックしたときに正しいノードをレンダリングする構造を持っていますが、正しいクラスを適用する方法がわかりません:-(
私のコードは次のとおりです。
@{
DynamicNode current = Model;
var nodes = Model.AncestorOrSelf(2).Children.Where("Visible");
if(nodes.Any())
{
<ul class="side-nav-list">
@foreach(var node in nodes)
{
bool isDescendantOrSelf = current.IsDescendantOrSelf(node);
<li>
<a href="@node.Url">@node.Name</a>
@if(isDescendantOrSelf)
{
@RenderSubMenuRecursive(node)
}
</li>
}
</ul>
}
}
@helper RenderSubMenuRecursive(DynamicNode node)
{
if(node.Children.Any(x => x.GetPropertyValue("umbracoNaviHide").Equals("0") && Model.IsDescendantOrSelf(node)))
{
var childNodes = node.Children.Where(x => x.GetPropertyValue("umbracoNaviHide").Equals("0"));
string css = node.IsAncestor(Model) ? "open" : "";
<ul>
@foreach(var childNode in childNodes)
{
<li class="@css">
<a href="@childNode.Url">@childNode.Name</a>
@if (childNode.IsDescendantOrSelf(node))
{
@RenderSubMenuRecursive(childNode)
}
</li>
}
</ul>
}
}
これに関するヘルプ/ヒントは大歓迎です! :-) 前もって感謝します!