2010-08-05 57 views
1

我想從Sitecore中的XSLT幫助器函數返回項目列表。這些項目可能會來自內容樹中的多個不同位置,因此不能使用簡單的XPath表達式。從Sitecore XSLT幫助器函數返回項目列表

我懷疑我需要對XPathNodeIterator類做些什麼,但是我無法弄清楚如何創建一個暴露列表而不是內容樹的連續部分的列表。

我知道我可以返回ID的列表,然後遍歷那些在XSLT(目前我在做什麼),但它是凌亂的,我想擺脫它。有誰知道如何做到這一點?

我正在使用Sitecore 6.2。

回答

1

是的。根據你想要做的項目選擇的性質,有很多方法可以達到此目的。

下應該做的伎倆

public XPathNodeIterator MyFunction(Item[] itemsToReturn) 
{ 
    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(@"<items />"); 
    foreach (Item i in itemsToReturn) 
     doc.DocumentElement.AppendChild(XmlUtil.NavigatorToNode(Factory.CreateItemNavigator(i), doc, true, new string[] { "item" }, new string[ 0 ])); 
    XPathNavigator nav = doc.CreateNavigator(); 
    return nav.Select("/items/*"); 
} 

我沒有時間充分測試,但它應該給你在正確的方向:-)

+0

它似乎工作。非常感謝! – Matt 2010-08-06 09:02:47

0

我會堅持使用的ID ,但也許將它們作爲XML結構返回而不是解析字符串。 XPathNodeIterator方法可能會干擾頁面編輯器中的內聯編輯以及其他XSL擴展,如生成URL。

See also

+0

感謝您的額外信息...我知道我不會爲子項目等獲得額外的項目XML。頁面編輯器和URL生成功能是否依賴於這些項目? – Matt 2010-08-08 17:40:08