2012-08-13 4 views
11

Pracuję nad modułem zaplecza, więc Node.GetCurrent() nie jest opcją. Muszę znaleźć sposób na wywołanie czegoś takiego jak Node currentNode = new Node(parentNodeId); i uzyskać węzeł główny witryny. Widziałem próbki w XSLT, ale nic dla C#. Czy ktoś wie, jak mogę to osiągnąć?Umbraco - znajdowanie węzła głównego w C#

Nawet samo pobranie identyfikatora węzła głównego, aby można było wywołać new Node(), byłoby wspaniałe.

Odpowiedz

14

Rootnode jest zawsze dostępny jako:

var rootNode = new Node(-1); 
5

Brennan jest poprawna,

var rootNode = new DynamicNode(-1); 

prace, jak dobrze!

5

Aktualizacja Umbraco 6+

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

    return rootNode; 
} 

To zajmuje tylko alias typu dokumentu i znajdzie węzeł główny jako IPublishedContent używając aktualnego kontekstu imbusowego. UmbracoHelper oferuje także wiele opcji.

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) może działać lepiej. –

+0

@ThomHubers, który wymaga tylko jednego węzła głównego. Jeśli aktualna strona znajduje się w drugim węźle głównym, to nie zadziała. –

+0

Jest to dodatek do tej odpowiedzi, która zwraca listę węzłów głównych, o które nie pytano. Najlepszy sposób na odzyskanie węzła głównego węzła w drzewie innym niż pierwsze zależy od przypadku użycia. W większości przypadków korzystam z typów dokumentów. –