2012-08-13 13 views
11

Estoy trabajando en un módulo back-end, por lo que Node.GetCurrent() no es una opción. Necesito encontrar una forma de llamar a algo como Node currentNode = new Node(parentNodeId); y obtener el nodo raíz del sitio. He visto muestras en XSLT, pero nada para C#. ¿Alguien sabe cómo puedo lograr esto?Umbraco - Encontrar nodo raíz en C#

Incluso me acaba de conseguir el ID del nodo raíz para que pueda llamar a new Node() sería genial.

Respuesta

14

El rootNode está siempre disponible como:

var rootNode = new Node(-1); 
5

Brennan es correcta,

var rootNode = new DynamicNode(-1); 

funciona tan bien!

5

Actualización para Umbraco 6+

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

    return rootNode; 
} 

Esto sólo se necesita un alias de tipo de documento y encuentra el nodo raíz que IPublishedContent utilizando el contexto actual Umbraco. UmbracoHelper te da algunas opciones de esto también.

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) podría funcionar mejor. –

+0

@ThomHubers que requiere solo un nodo raíz. Si la página actual está en el segundo nodo raíz, esto no funcionará. –

+0

Es una adición a esta respuesta, que devuelve una lista de nodos raíz, que no se solicitó. La mejor forma de recuperar el nodo raíz de un nodo en un árbol que no es el primero depende del caso de uso. Hago uso de tipos de documentos en la mayoría de los casos. –

Cuestiones relacionadas