我通过列出特定页面的子节点来创建一个页脚,其中包含umbraco 4.11.9中包含的示例(由changable source提供)。
页脚中的元素数量预计会发生变化,因此宏必须将子列表分开并将它们作为LI放在三个UL中。 所有的孩子都是源头的直接后裔
当前代码:
@inherits umbraco.MacroEngines.DynamicNodeContext
@{
var startNodeID = "1089";
}
@if (startNodeID != null)
{
@* Get the start node as a dynamic node *@
var startNode = Library.NodeById(startNodeID);
if (startNode.Children.Where("Visible").Any())
{
<ul>
@foreach (var page in startNode.Children.Where("Visible"))
{
<li><a href="@page.Url">@page.Name</a></li>
}
</ul>
}
}
答案 0 :(得分:1)
在使用模数运算符之前,我做过类似的事情。请参阅以下示例:
var col1Count = 1;
var col2Count = 1;
var col3Count = 1;
<div class="col col-3 hide-mobile">
@foreach (var nodeId in links)
{
if (col1Count % 3 == 1)
{
// Output column 1 content
}
col1Count++;
}
</div>
<div class="col col-3 hide-mobile">
@foreach (var nodeId in links)
{
if (col2Count % 3 == 2)
{
// Output column 2 content
}
col2Count++;
}
</div>
<div class="col col-3 hide-mobile">
@foreach (var nodeId in links)
{
if (col3Count % 3 == 0)
{
// Output column 3 content
}
col3Count++;
}
</div>
答案 1 :(得分:0)
这可能是一种有点直接的方法,但为什么不尝试(在你的if / .Any()中):
注意 - 此方法使用LINQ
var childNodes = startNode.Children.Where("Visible").ToList();
int perListCount = childNodes.Count;
for (int i = 0; i < 3; i++){
var activeNodeList = childNodes.Skip(i * perListCount).Take(perListCount);
if (i == 2){
activeNodeList = childNodes.Skip(i * perListCount);
}
<ul>
@foreach(var node in activeNodeList){
<li><a href="@node.Url">@node.Name</a></li>
}
</ul>
}