我在Umbraco 4.11.10中有一个树结构,它使用2种不同类型的“Detail Page”节点。一个有日期,一个有非日期“详细页面”节点。我需要确定要显示的列表,具体取决于子节点是否具有doctype为“ListParent”的父节点的date属性。
我能够创建节点列表,但我需要确定要显示的列表。
这是我最终想要的:
父节点1('ListParent'的Doctype)
父节点2('ListParent'的Doctype)
我真的很接近我的代码,但我只需要一些帮助来确定要显示的内容。这是我到目前为止的情况。我只需要IF语句来确定要显示的列表。
非常感谢任何帮助。
@using umbraco.MacroEngines
@inherits umbraco.MacroEngines.DynamicNodeContext
@{
if(@Model.Descendants().NodeTypeAlias == "Event"){@*Not Working*@
@pageListingSorted()
}
else{
<P>not sorted</P>
@pageListing()
}
}
@helper pageListing(){
foreach(var item in @Model.Children.Where("!hideFromAllMenus")){
var listImage = Library.MediaById(item.landingPageImage);
<div class="boxItem grid_4">
@if(@item.HasValue("landingPageImage")){
<a href="@item.Url">
<img src="/imagegen.ashx?width=224&image=@listImage.Url" style="margin-left:-60px" />
</a>
<div class="boxButtons"></div>
if (!String.IsNullOrWhiteSpace(item.buyNowLink))
{
<a href="@item.buyNowLink" class="buyNowBtn" title="Buy tickets to @item.Name" onclick="pageTracker._link('@item.buyNowLink'); return false;">Buy Now</a>
}
<a href="@item.Url" class="learnMoreBtn">Learn More</a>
}
<h3>
@if (!String.IsNullOrWhiteSpace(item.altPageTitle))
{
<a href="@item.Url"> @item.altPageTitle</a>
}
else
{
<a href="@item.Url"> @item.Name</a>
}
</h3>
</div>
}
}
@*END PAGE LISTING HELPER*@
@helper pageListingSorted(){
foreach(var item in @Model.Children.Where("!hideFromAllMenus").Where("calendarEventDateTime != null").OrderBy("calendarEventDateTime")){
var listImage = Library.MediaById(item.landingPageImage);
<div class="boxItem grid_4">
@if(@item.HasValue("landingPageImage")){
<a href="@item.Url">
@*--Added margin negative left for original images - Take out on Live--*@
<img src="/imagegen.ashx?width=224&image=@listImage.Url" style="margin-left:-60px" />
</a>
<div class="boxButtons"></div>
if (!String.IsNullOrWhiteSpace(item.buyNowLink))
{
<a href="@item.buyNowLink" class="buyNowBtn" title="Buy tickets to @item.Name" onclick="pageTracker._link('@item.buyNowLink'); return false;">Buy Now</a>
}
<a href="@item.Url" class="learnMoreBtn">Learn More</a>
}
<h3>
@if (!String.IsNullOrWhiteSpace(item.altPageTitle))
{
<a href="@item.Url"> @item.altPageTitle</a>
}
else
{
<a href="@item.Url"> @item.Name</a>
}
</h3>
@*Event Status*@
@if (item.soldOut)
{
<p class="statusAlert">Sold Out</p>
}
else if (item.cancelled)
{
<p class="statusAlert">Cancelled</p>
}
else if (item.rescheduled)
{
<p class="statusAlert">Rescheduled</p>
}
else
{
<text></text>
}
@if (!String.IsNullOrWhiteSpace(item.eventTimeHeader))
{
<div class="dateTimeHeader">@item.eventTimeHeader</div>
}
</div>
}
}@*END PAGE LISTING SORTED HELPER*@
答案 0 :(得分:0)
如果你的可排序的孩子是节点类型“事件”(孩子们将目标放在一个级别 - 如果你检查下面的多个级别你只需要使用后代),这应该没问题:
if(@Model.Children().Where(x => x.NodeTypeAlias == "Event").Count() > 0) {
@pageListingSorted()
}
else{
<P>not sorted</P>
@pageListing()
}
答案 1 :(得分:0)
这是我找到的解决方案。感谢@amelvin直接帮助我。
if(@Model.Children.Where("NodeTypeAlias == \"Event\"").Count() > 0) {
@pageListingSorted()
}
else{
<P>not sorted</P>
@pageListing()
}