2

Tridion 2011 の Razor TBB を介して、Tridion 出版物のカテゴリとキーワード情報の値にアクセスしようとしています。Razor のドキュメントには、次のサンプル コードがリストされています。

<ul>
@foreach (var keyword in Publication.MetaData.SomeKeywordFields) {
<li>@keyword.Title (@keyword.Id)</li>
}
</ul>

私はカテゴリ内にキーワードを持っています... 実際、Tridion でキーワードを持つことさえできることを私自身が認識している唯一の方法ですが、間違っている場合は修正してください。例の構文から推定して、「myCategory」がパブリケーションのカテゴリであり、「myKeyword」が myCategory カテゴリ内のキーワードである次のことを試しました。

@foreach (var keyword in Publication.MetaData.myCategory) {
if(@keyword.Title == "myKeyword") {
@keyword.Title
}

このテンプレートを実行すると、DynamicItemsFields: Key 'testcategory' Not Found In ItemFields (Object reference not set to an instance of an object) というエラーが表示されます

ここで私が試みていることを実行できるかどうかを特定するのを手伝ってくれる人はいますか (ドキュメントに基づいているようですが、まだ確信が持てないため)、そうであれば、正しい構文の例を提供できますか?

4

3 に答える 3

1

実際、キーワードは常にカテゴリまたは別のキーワード内にあります。ただし、コンポーネントなどのアイテムや、(例のように) パブリケーション、フォルダーなどのメタデータ内で使用されます。

ドキュメントの例は、パブリケーションの多値メタデータ キーワード フィールドの各値を出力しています (つまり、「複数の値を許可する」、「リストから選択された値」、および「カテゴリ」はすべてメタデータ スキーマでチェックされます)。

同様のことをしようとしている場合は、実際にフィールドの名前を変更することができ、それは機能します。ただし、あなたの質問から、特定のカテゴリ内のすべてのキーワードをループしようとしているようです。これには別のアプローチが必要です。

そのためには、TBB 内での GetList 呼び出しに相当するものが必要になります。Razor メディエーターについては、サンプル コードを提供できるほど詳しくありません。申し訳ありません。

于 2012-06-12T10:17:53.193 に答える
1

チャットで Ram G に感謝:

パブリケーション自体、通常は 010、020... 050 などのレベルに、メタデータ スキーマを添付することもできます。上記の Razor ロジック ブロックの対象となるフィールドの XMLName は、実際にはこのメタデータ スキーマ アイテムのフィールド名であり、カテゴリ自体の名前ではありません。パブリケーションのメタデータ スキーマで、[デザイン] タブを選択し、アイテムの XML フィールドを "テキスト" タイプにします。[オプションはリストから選択されます] を選択します。既定では、[カテゴリ] という別のチェックボックスが表示されます。これをオンにすると、そのパブリケーションに存在するカテゴリ アイテムの完全なリストが自動的に取り込まれます。そのため、その Field が Razor ロジックによってターゲットにされると、Category 値も複数のステップでターゲットになります。

ありがとうラムG

于 2012-06-12T16:00:25.120 に答える