2017-01-16 9 views
2

私は、開発者は、このように、コンテンツのページへの参照を取得umbracoコード、で見てきた:Umbracoのコンテンツノードへの参照を取得しますか?

var content = UmbracoContext.PublishedContentRequest.IsInternalRedirectPublishedContent 
       ? UmbracoContext.PublishedContentRequest.InitialPublishedContent 
       : UmbracoContext.PublishedContentRequest.PublishedContent; 

しかし、彼らはそれをなぜ行うのですか?

Model.Content(@は使用しないのはなぜ

(彼らは何をしますか)とは何ですか:

  • IsInternalRedirectPublishedContent?

  • InitialPublishedContent?

  • PublishedContent?

+0

リダイレクトされたコンテンツ?それは悪いですか? – user1032019

答えて

3

Umbracoには、「隠された」機能を得るためにドキュメントに置くことができる多数の予約済みプロパティがあります。それらのうちの1つはumbracoInternalRedirectIdであり、内部リダイレクトを行い、要求されているノードではなく別のノードをレンダリングすることができます。

その他の予約済みプロパティの一部については、hereを参照してください。

内部リダイレクトを使用する場合、リクエストは内部的に別のノードIDにリダイレクトされ、最初に他のノードをリクエストしたようにレンダリングされます(ブラウザリダイレクトは表示されません。 URLにも反映されます)。

(彼らは何をしますか)とは何ですか:

IsInternalRedirectPublishedContent?

リダイレクト先のコンテンツが現在公開されている場合は、これが該当します。コンテンツが公開されていない場合はfalseです。

InitialPublishedContent?

これは最初に(リダイレクトが発生する前に)ヒットしているコンテンツアイテムです。

PublishedContent?

リダイレクト先のコンテンツアイテムです(これは、上記の現在のコンテンツアイテムと同じです)。

しかし、なぜそうするのですか?上記行われる何

任意の内部リダイレクトは、リダイレクトの場合に起こって前に必ず初期コンテンツへの参照を取得しようとすることです - と起こっては内部リダイレクトはありません場合は、単に現在のコンテンツアイテムを取得します。

IsInternalRedirectPublishedContentがfalseを返す場合、InitialPublishedContentPublishedContentと同じであることを考慮すると、実際にはこれを行うことは理にかなっていません。

あなたは、単に行うことによって、上記と同じ結果を得るでしょう:

var content = UmbracoContext.PublishedContentRequest.InitialPublishedContent; 

それはしかし、これは常にそうしていないこととすることができ、コードのこの作品は、古いでバグを回避するためだったことバージョンのUmbraco。

あなたのサイトに非常に奇妙なリダイレクト設定がない限り、投稿したコードの代わりにこのコードを使用するだけの理由はありません。完全にあなたの質問に答えるために

:あなたのテンプレートでcontentを使用して、上記のコードで

は、リダイレクトがで設定されているページへの参照になります。 Model.Contentを使用すると、内部的にリダイレクトされるノードへの参照になります。

関連する問題