0

我通过列出特定页面的子节点以及 umbraco 4.11.9 中包含的示例来制作页脚(可更改来源的子节点)。

预计页脚中的元素数量会发生变化,因此宏必须划分子列表并将它们作为 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>
    }    
}
4

2 回答 2

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> 
于 2013-07-08T07:45:43.280 回答
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>
    }
于 2013-07-08T06:57:51.583 回答