2012-08-13 19 views
11

Arka uç modül üzerinde çalışıyorum, bu yüzden Node.GetCurrent() bir seçenek değil. Node currentNode = new Node(parentNodeId); gibi bir şeyi aramak için bir yol bulmalı ve sitenin kök düğümünü almalıyım. XSLT'de örnekler gördüm, ama C# için hiçbir şey yok. Bunu nasıl başarabileceğimi bilen var mı?Umbraco - C Kök Düğümünü Bulma #

Kök düğümün kimliğini alıyorum, böylece new Node() numaralı telefonu arayabilirim.

var rootNode = new DynamicNode(-1); 

eserler de,

var rootNode = new Node(-1); 

cevap

14

rootNode olarak her zaman mevcuttur! Sadece bir belge türü takma alır ve şimdiki Umbraco bağlamını kullanarak IPublishedContent olarak kök düğüm bulur Bu Umbraco 6+

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

    return rootNode; 
} 

için

5

Güncelleme. UmbracoHelper bu konuda da size birkaç seçenek sunuyor. Umbraco 7 için

1

Umbraco 7:

Umbraco.TypedContentAtRoot(); 
+0

[Umbraco. TypedContentAtRoot() .İlk()] (https://our.umbraco.org/forum/developers/api-questions/47125-How-to-get-the-root-node-in-Umbraco-67#comment-168666) daha iyi çalışabilir. Yalnızca bir kök düğümü gerektiren –

+0

@ThomHubers. Geçerli sayfa ikinci kök düğümde ise, bu işe yaramaz. –

+0

Bu yanıtın bir eki, istenilmeyen bir kök düğüm listesi döndürüyor. İlk olmayan bir ağaçtaki bir düğümün kök düğümünü almanın en iyi yolu, kullanım durumuna bağlıdır. Çoğu durumda Belge Türlerini kullanırım. –