Нужна помощь в динамическом создании навигационных ссылок на основе контента, созданного в Umbraco.

Я очень новичок в Umbraco CMS и недавно начал программировать в ней. Структура моей страницы выглядит таквведите здесь описание изображения

И теперь я написал такой код для создания динамической навигации на основе кода, который я нашел на форумах Umbraco. Но на выходе он дает только «Дом» в качестве ссылки, а не другие ссылки. Причина в том, что я написал это так: { 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>

Какое выражение будет правильным для прохождения this.

Спасибо и с уважением

утпал


person Utpal    schedule 10.03.2014    source источник


Ответы (1)


Итак, первое, что вы хотите, это изменить иерархию вашего сайта на это:

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

Вы можете найти в разделе Типы документов в разделе Настройки в типе документа основного узла вкладку Структура, чтобы добавить разрешенные типы дочерних узлов для создания домашний узел разрешил детям 3 типа, которые у вас есть.

Затем вам нужно, чтобы этот код достиг вашего домашнего узла:

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

Где «Сайт» — это тип документа вашего домашнего узла.

Затем вы можете подготовить данные, которые хотите зациклить:

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

Наконец, вы можете изменить свой цикл на это:

@foreach (var page in menuItems)

Это должно помочь вам заставить это работать.

person Sébastien Richer    schedule 11.03.2014