2012-09-27 47 views
0

試圖獲得有關如何通過API方法從umbraco檢索數據的一些觀點。我相信我們正在使用umbraco 4.9.x.umbraco API:試圖獲取給定網站節點的文檔類型數據

基本上有一個叫DiaryEventItems數據類型,我用下面的代碼訪問此:

// Get the ID of the data type 
DocumentType DocTypeDiaryEvents = DocumentType.GetByAlias("DiaryEventItems"); 

// Loop through those items using a foreach at present 
foreach (Document DiaryEvent in Document.GetDocumentsOfDocumentType(DocTypeDiaryEvents.Id)) 
{ 
    // Do whatever I need to 
} 

所以這個工作得很好。我找回了集「DiaryEventItems」的/行,但是我從當然的umbraco實例中獲得所有DiaryEventItems ..即對於所有站點。所以顯然有方法來獲取站點根節點ID,並可能在樹上工作,以獲得我需要的實際文檔類型,但有沒有辦法做到這一點,類似於上面的代碼?

任何幫助讚賞謝謝!

回答

2

你可以試試下面的函數只發布時間節點:

// this is variable to retrieve Node list 
private static List<Node> listNode = new List<Node>(); 

public static List<Node> GetDescendantOrSelfNodeList(Node node, string nodeTypeAlias) 
{ 
    if (node.NodeTypeAlias == nodeTypeAlias) 
     listNode.Add(node); 

    foreach (Node childNode in node.Children) 
    { 
     GetDescendantOrSelfNodeList(childNode, nodeTypeAlias); 
    } 

    return listNode; 
} 

現在你可以在代碼中調用該函數如下:

// 1234 would be root node id 
Node rootNode = new Node(1234) 

// we are passing root node so that it can search through nodes with alias as DiaryEventItems 
List<Node> diaryEventItems = GetDescendantOrSelfNodeList(rootNode, "DiaryEventItems"); 

我希望這會有所幫助, 如果你看對於具有Document的未發佈節點及其不同,將花費一點時間給我,但如果您想要未發佈的節點,那麼稍後我會做。

+0

嗨Ankur!感謝您的迴應!是的,這是一個已發佈的節點等,所以會試一試!謝謝! –

+0

工作完美!很好的例子謝謝! –