私はバックエンドモジュールに取り組んでいるので、Node.GetCurrent()
はオプションではありません。 Node currentNode = new Node(parentNodeId);
のようなものを呼び出して、サイトのルートノードを取得する方法を見つける必要があります。 XSLTでサンプルを見たことがありますが、C#では何もありません。誰かが私がこれを達成する方法を知っていますか?
ルートノードのIDを取得して、new Node()
を呼び出せるようにするだけでもよいでしょう。
ルートノードは常に次のように使用できます。
var rootNode = new Node(-1);
Umbraco 7のアップデート(以前のバージョンでも機能する可能性があります)
@{
var siteroot = CurrentPage.AncestorOrSelf(1);
}
詳細については、ドキュメントを確認してください-> http://our.umbraco.org/Documentation/Reference/Querying/DynamicNode/Collections
Umbraco6 +のアップデート
public static IPublishedContent GetRootNode()
{
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
var rootNode = umbracoHelper.TypedContentSingleAtXPath("//root"));
return rootNode;
}
これは、ドキュメントタイプのエイリアスを取得し、現在のUmbracoコンテキストを使用してルートノードをIPublishedContentとして検索します。 UmbracoHelperは、これからもかなりの数のオプションを提供します。
Umbraco 7:
Umbraco.TypedContentAtRoot();
ブレナンは正しいです、
var rootNode = new DynamicNode(-1);
同様に動作します!
私はよくこれを使います。複数のルートノードがある場合、foreachループなしで両方をターゲットにできるように、相対的であることが好きです。
IPublishedContent topNode = Model.Content.AncestorOrSelf(1);