[英]Umbraco foreach children of a child page
我在內容結構的主頁內的新聞頁面中有新聞帖子
主頁
- 新聞
- 新聞發布
我希望在foreach聲明中在我的主頁上提供一些新聞。 在我腦海里它應該是這樣簡單:
@foreach (var homenews in CurrentPage.Children.Children)
{
if (homenews.Name == "News Post")
{
//Do some stuff//
}
}
顯然這不起作用所以有人有任何想法嗎? 謝謝
當你走在樹上時,你必須記住像Children
或Descendants()
這樣的屬性(或方法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.