DNNのDDRMenuでnav.cshtmlを使用しています。このウェブサイトのページでは、現在のページの子ページのみが表示されているページがある場合はそのページを表示し、現在のページの兄弟ページを表示しない場合は、メニューを表示します。DDRMenuのメニューオブジェクトに兄弟メニューアイテムを表示する方法
ここでは、コードです:
@using DotNetNuke.Web.DDRMenu;
@using System.Dynamic;
@inherits DotNetNuke.Web.Razor.DotNetNukeWebPage<dynamic>
@{
\t var root = Model.Source.root;
}
@helper RenderNodes(IList<MenuNode> nodes)
{
if (nodes.Count > 0)
{
\t \t <ul class="navbar-nav ml-auto">
\t \t \t @foreach (var node in nodes)
\t \t \t {
\t \t \t \t String isActive = "";
\t \t \t \t string isDisabled = "";
\t \t \t \t if (node.Selected) { isActive = "active"; }
\t \t \t \t if (!node.Enabled) { isDisabled = "disabled"; }
\t \t \t \t if (node.HasChildren())
\t \t \t \t {
\t \t \t \t \t <li class="nav-item parent">
\t \t \t \t \t \t <a href="@node.Url" class="@isActive @isDisabled nav-link">@node.Text</a>
\t \t \t \t \t \t <button class="submenuButton" onclick="$(this).toggleClass('active'); return false;">
\t \t \t \t \t \t \t <i class="fa fa-caret-down" aria-hidden="true"></i>
\t \t \t \t \t \t </button>
\t \t \t \t \t \t @RenderChildNodes(node.Children)
\t \t \t \t \t </li>
\t \t \t \t }
\t \t \t \t else
\t \t \t \t {
\t \t \t \t \t <li class="nav-item"><a href="@node.Url" class="@isActive @isDisabled nav-link">@node.Text</a></li>
\t \t \t \t }
\t \t \t }<!-- ./ for loop -->
\t \t </ul>
}<!-- ./ node count -->
}<!-- ./ helper -->
@helper RenderChildNodes(IList<MenuNode> nodes)
{
if (nodes.Count > 0)
{
\t \t <ul class="children bg-primary text-white rounded list-unstyled text-left ml-0">
\t \t \t @foreach (var node in nodes)
\t \t \t {
\t \t \t \t String isActive = "";
\t \t \t \t string isDisabled = "";
\t \t \t \t if (node.Selected) { isActive = "active"; }
\t \t \t \t if (!node.Enabled) { isDisabled = "disabled"; }
\t \t \t \t if (node.HasChildren())
\t \t \t \t {
\t \t \t \t \t <li class="nav-item px-1">
\t \t \t \t \t \t <button class="submenuButton" onclick="$(this).toggleClass('active'); return false;">
\t \t \t \t \t \t \t <i class="fa fa-caret-down" aria-hidden="true"></i>
\t \t \t \t \t \t </button>
\t \t \t \t \t \t <a href="@node.Url" class="@isActive @isDisabled nav-link">@node.Text</a>
\t \t \t \t \t \t @RenderChildNodes(node.Children)
\t \t \t \t \t </li>
\t \t \t \t }
\t \t \t \t else
\t \t \t \t {
\t \t \t \t \t <li class="nav-item px-1 "><a href="@node.Url" class="@isActive @isDisabled nav-link">@node.Text</a></li>
\t \t \t \t }
<!-- begin snippet: js hide: true console: true babel: false -->
基本的に、私は、現在のページが選択されている場合は、兄弟を表示する方法を把握する必要がありますが、子供はありません。
は、if (!node.HasChildren() && node.Selected) {
<!--Display Sibling nodes-->
}
ご協力いただければ幸いです。
は兄弟は、とにかくあなたのメニューがレンダリングされるように表示されないでしょうか? – Nikolaus
このメニューオブジェクトでは、現在のページの子がない場合のみ、兄弟が表示するようにします。 – pjones235
RenderNodesメソッドまたはRenderChildrenメソッドの意味ですか? – Nikolaus