Umbracoについての非常に単純な質問だと思いますが、現時点では明確な答えはありません。
私はかみそりのテンプレート、標準的なもの、@表示変数といくつかのインラインC#コードを持っています。
私が使用するテンプレートのある時点で:
@Umbraco.RenderMacro("myCustomMacro");
問題はありません。すべてが期待どおりに機能します。
現在、このマクロはすべてのページに挿入されています(マスターテンプレートにあります)が、コンテンツ作成者がページプロパティのチェックボックスを介してオンとオフを切り替えることができるページプロパティがあります。これまでのところ、すべてが完全に機能しています。 。
ただし、特定の「ドキュメントタイプ」については、このコンポーネントを表示する必要があることがわかりました。そのため、そのチェックを実行する方法を見つけようとしています。
今私の心の中で、これは次のようなことをするのと同じくらい簡単なはずです:
@{
if(CurrentPage.documentType == "someDocTypeAliasHere")
{
//Render the macro
}
else
{
// Render the macro only if the tick box is checked
}
}
私が言っているように、これは非常に単純な操作です(またはとにかくそうあるべきだと思います)が、これまでのところ結果が出ていないようです。
かみそりと@CurrentPage変数に関係することについて言及しているumbracoのすべてのページを読むこととは別に、Iv'eはかみそりのプロパティのチートシートに目を通し、(特に注文):
@CurrentPage.NodeTypeAlias
@CurrentPage.NodeType
@CurrentPage.ContentType
@CurrentPage.DocumentType
そして、それらのさまざまな大文字の組み合わせに加えて、それらが法案に合うかもしれないように見えた他のいくつか。
一貫して、プロパティは存在しないか空であるため、結果を判断するのに役立つ情報はありません。
だから今、数日円を描いて回り、どこにも行かなくなった後、私はここにいることに気づきました。
(注意:これはXSLTの質問を検索したり、子コレクションなどを繰り返したりするものではないため、XSLT、マクロ、ページテンプレートなどを投稿するリクエストは拒否されます。必要なのは、レンダリングされている現在のページのドキュメントタイプを判別する方法。)
乾杯
ショーティ
PS:言及するのを忘れて、私は使用しています
umbraco v 4.11.8(アセンブリバージョン:1.0.4869.17899)
誰かが尋ねた場合に備えて。
nodetypealiasなどのページプロパティにアクセスするために、ページにアクセスするたびに実際にノードを作成する必要があると思います。これを試してみてください。私のサイトにも同じ種類の機能があります http:// rdmonline。 co.uk/ ただし、ページ/セクションに応じて差分メニューリンクが表示されるサイドメニュー。
@{
var currentPageID = Model.Id;
var currentPageNode = Library.NodeById(currentPageID);
if (currentPageNode.NodeTypeAlias == "someDocTypeAliasHere")
{
//Render the macro
}
else
{
// Render the macro only if the tick box is checked
}
}
これがあなたのために働くかどうか私に知らせてください。
Umbraco7ではcurrentPageNode.DocumentTypeAlias
を使用します
Umbraco 7.1では次を使用します:@if (@CurrentPage.DocumentTypeAlias == "NewsItem")
これはこの投稿とは少し関係ありませんが、Googleを検索するとこの投稿が表示されたので、anoyneがこの問題に対処している場合に備えて共有したいと思いました:Umbraco 7では、特定のタイプのサイトのすべてのコンテンツを取得します:
var articles = CurrentPage.AncestorOrSelf(1).Descendants()
.Where("DocumentTypeAlias == \"BlogPost\"").OrderBy("CreateDate desc");
かみそりビューがUmbraco.Web.Mvc.UmbracoViewPage
を継承している場合は、UmbracoHelper
を使用することもできます。
@if (UmbracoHelper.AssignedContentItem.DocumentTypeAlias.Equals("NewsItem")) { ... }
特定のDocumentTypeのクエリも簡単です。
UmbracoHelper.AssignedContentItem.Descendants("NewsItem")
このコードは、IPublishedContent
ノードのリストを再帰的に返します。このリストを特定のDocumentType情報とともに使用する場合は、これらのアイテムを特定のタイプにマップする必要があります。それ以外に、IPublishedContent
はノードの 基本情報 を提供します。
後で、古いバージョンのUmbracoを使用していることを確認しました。 :)この実装はv7専用です。