2012-08-13 9 views
11

Ich arbeite an einem Back-End-Modul, so Node.GetCurrent() ist keine Option. Ich muss einen Weg finden, um so etwas wie Node currentNode = new Node(parentNodeId); anzurufen und den Wurzelknoten der Site zu erhalten. Ich habe Samples in XSLT gesehen, aber nichts für C#. Weiß jemand, wie ich das erreichen kann?Umbraco - Wurzelknoten in C finden #

Auch nur die ID des Root-Node, so dass ich new Node() anrufen kann, wäre toll.

Antwort

14

Die rootnode ist immer verfügbar als:

var rootNode = new Node(-1); 
5

Brennan ist richtig,

var rootNode = new DynamicNode(-1); 

auch funktioniert!

5

Update für Umbraco 6+

public static IPublishedContent GetRootNode() 
{ 
    var umbracoHelper = new UmbracoHelper(UmbracoContext.Current); 
    var rootNode = umbracoHelper.TypedContentSingleAtXPath("//root")); 

    return rootNode; 
} 

Dies ist nur ein Alias ​​Dokumenttyp nimmt und findet den Wurzelknoten als IPublishedContent den aktuellen Umbraco Kontext. UmbracoHelper bietet Ihnen auch einige Optionen.

1

Umbraco 7:

Umbraco.TypedContentAtRoot(); 
+0

[Umbraco. TypedContentAtRoot() .First()] (https://our.umbraco.org/forum/developers/api-questions/47125-How-to-get-the-root-node-in-Umbraco-67#comment-168666) könnte besser funktionieren. –

+0

@ThomHuber, die nur einen Stammknoten erfordert. Wenn sich currentpage im zweiten Stammknoten befindet, funktioniert dies nicht. –

+0

Es ist eine Ergänzung zu dieser Antwort, die eine Liste der Stammknoten zurückgibt, die nicht gefragt wurde. Die beste Methode zum Abrufen des Stammknotens eines Knotens in einem nicht-ersten Baum hängt vom Anwendungsfall ab. Ich verwende in den meisten Fällen Dokumenttypen. –