0

只是想了解如何通过 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,并且可能会沿着树向下工作以获得我需要的实际文档类型,但是有一些类似于上面代码的方法吗?

任何帮助表示感谢!

4

1 回答 1

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 的未发布节点及其不同的节点,并且会花费一些时间,但是如果您只想要未发布的节点,那么我稍后再做。

于 2012-09-27T13:40:20.860 回答