2012-07-20 65 views
1

我試圖用剃刀迭代通過多節點選取器。我的小部件的別名是「venuesPicker」。我收到錯誤,「無法加載宏文件」。這是我到目前爲止:Umbraco剃刀 - 迭代通過多節點選取器

<umbraco:Macro runat="server" language="cshtml"> 
@{ 
    using uComponents.Core; 
    using uComponents.Core.uQueryExtensions; 

    foreach (var x in Model.venuesPicker) 
    { 
     @x.highlightTitle 
    } 
} 
</umbraco:Macro> 
+0

這有幫助嗎? – 2012-07-24 11:12:44

回答

6

查看我的回答our.umbraco.org forum post。基本上,這取決於MNTP是否使用XML或CSV,您可以執行下列操作之一:

CSV:

@using umbraco.MacroEngines 
@inherits DynamicNodeContext 
@if (Model.HasValue("venuesPicker")) 
{ 
    string[] ids = Model.venuesPicker.Split(','); 

    <ul> 
    @foreach (string id in ids) 
    { 
     var node = Library.NodeById(id); 
     if (node.Id != 0) 
     { 
      // If node exists: 
      <li><a href="@node.Url">@node.Name</a></li> 
     } 
    } 
    </ul> 
} 

XML:

@using umbraco.MacroEngines 
@inherits DynamicNodeContext 
@if (Model.HasValue("venuesPicker")) 
{ 
    <ul> 
    @foreach (var item in Model.venuesPicker) 
    { 
     var node = Library.NodeById(item.InnerText); 
     if (node.Id != 0) 
     { 
      // If node exists: 
      <li><a href="@node.Url">@node.Name</a></li> 
     } 
    } 
    </ul> 
} 
0

您可以使用uQuery.getNodesByCSV或uQuery.getMediaByCSV。 uQuery加入一把umbraco核心的4.9,我認爲,否則,你可以安裝uComponents包

所以例如我有這樣的事情在4.9.1遍歷一些媒體

@using umbraco.MacroEngines 
@using umbraco.cms.businesslogic.media 
@inherits umbraco.MacroEngines.DynamicNodeContext 
@{ 
    <div class="slideshow"> 
     @foreach (Media img in uQuery.GetMediaByCsv(Model.lightBoxImages)) 
     { 
      <figure> 
       <a href="#"> 
        <img src="@img.GetImageUrl()" /> 
       </a> 
      </figure> 
     } 
    </div> 
} 

further info on Umbraco forum