需要有关根据Umbraco中创建的内容动态创建导航链接的帮助

时间:2014-03-10 11:18:36

标签: umbraco umbraco6 umbraco7

我在Umbraco CMS中非常新,并且最近开始编写它。我的页面结构类似于enter image description here

现在我编写了这样的代码,根据我在Umbraco论坛中找到的代码生成动态导航。但是在输出中它只给出了'Home'作为链接而不是其他链接。原因是我写的就像这样{var homeNode = Model.AncestorOrSelf(1);它只返回主页而不是其他页面。我也试过使用它也是Model.AncestorOrSelf()。但它给出了相同的结果。

<nav>
    <ul>

        @{ var homeNode = Model.AncestorOrSelf(1); }

        <li><a href="@homeNode.Url" class="@Library.If(homeNode.Id == Model.Id, "selected", "")">@homeNode.Name</a></li>

        @foreach (var page in Model.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.Textpages.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>

什么是正确的表达来遍历这个。

谢谢和问候

utpal

1 个答案:

答案 0 :(得分:0)

正确所以您想要的第一件事就是将您的网站层次结构更改为:

Home
|-- About Us
|-- Contact Us
|-- Services

您可以在文档类型中找到主节点'S文档类型中设置下的结构选项卡,以添加允许的节点子节点使主节点允许的3种类型的孩子的类型。

接下来,您将希望此代码到达您的主节点:

var homeNode = Model.Content.AncestorOrSelf("Site");

“站点”是您的主节点的文档类型。

接下来,您可以准备要循环的数据:

var menuItems = homeNode.children.Where(x => x.IsVisible());

最后,您可以将循环更改为:

@foreach (var page in menuItems)

这可以帮助您实现这一目标。