umbraco API:尝试获取给定站点节点的文档类型数据

时间:2012-09-27 11:27:53

标签: c# api umbraco

试图了解如何通过API方法从umbraco中检索数据。我相信我们正在使用umbraco 4.9.x。

基本上有一个名为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,也许可以在树下工作以获得我需要的实际文档类型,但有没有一种方法可以实现这一点,类似于上面的代码?

任何帮助表示感谢!

1 个答案:

答案 0 :(得分: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的节点及其不同的节点,并且将花费一点时间,但如果您只想要未发布的节点,那么我稍后会这样做。