簡體   English   中英

Umbraco預約兒童頁面的兒童

[英]Umbraco foreach children of a child page

我在內容結構的主頁內的新聞頁面中有新聞帖子

例:

主頁
- 新聞
- 新聞發布

我希望在foreach聲明中在我的主頁上提供一些新聞。 在我腦海里它應該是這樣簡單:

@foreach (var homenews in CurrentPage.Children.Children)
{
     if (homenews.Name == "News Post")
     {
         //Do some stuff//
     }
}

顯然這不起作用所以有人有任何想法嗎? 謝謝

當你走在樹上時,你必須記住像ChildrenDescendants()這樣的屬性(或方法Descendants()將返回一個對象集合,因此你不能只調用一個集合的Children 您只能在單個對象上調用Children

您可以使用var newsPage = CurrentPage.Children.Where(x => x.DocumentTypeAlias == "NewsListingPage")類的內容找到主頁的正確子項,然后提取該頁面的子項。

我最終得到了它的id的新聞頁面,然后從那里得到它的孩子。 以下代碼對我有用。 多謝你們。

@{
    var node = Umbraco.Content(1094);    
    <p>@node.Id</p> // output is 1094  
    foreach (var item in node.Children.Where("Visible").Take(3))

    {

         <p>@item.exampleText</p>

    }
    }

您需要通過NodeTypeAlias的文檔類型引用所需的節點。

因此,假設您的新聞帖的DocType的別名是“NewsPosts”,那么......

@foreach (var homenews in @Model.Descendants().Where("NodeTypeAlias == \"NewsPosts\"")).Take(3)
{       
    <p>@homenews.Name<p>
}   

...應該返回前3個新聞帖的名稱。

我有確切的情況,這就是我的工作方式。 NodeByID非常有用nad -1表示根

@foreach(var item in Model.NodeById(-1).Children)
    {
string itemName = item.Name;
switch(itemName)
{
    case "News":
        @* News *@
    <div id="News"> 
      <h3><a href="@item.Url">@item.Name</a></h3>
   @foreach (var newsPost in item.Children.OrderBy("UpdateDate desc").Take(4).Items)
        {
            <p>
            <a href="@newsPost.Url">@newsPost.Title</a>
             </p>
        }

    </div>
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM