8

コンポーネントURIのリストを取得するための単純なSDLTridion2011SP1ブローカークエリがあります。すべてのコンポーネントはページに埋め込まれており、動的コンポーネントテンプレートを使用していません。次のコードは50の結果を返します(これは予想されることです)。その1つがURItcm:123-456-16です。

List<Criteria> criteria = new List<Criteria>();
criteria.Add(new ItemTypeCriteria(16));
criteria.Add(new PublicationCriteria(337));
Query query = new Query(CriteriaFactory.And(criteria.ToArray<Criteria>()));
String[] results =  query.ExecuteQuery();

コンポーネントtcm:123-456-16は、「NewsPortal」という名前のスキーマに基づいています。クエリに条件を追加して、そのスキーマに基づくアイテムのみを取得するようにしたいので、次のコードを試しました。

List<Criteria> criteria = new List<Criteria>();
criteria.Add(new ItemTypeCriteria(16));
criteria.Add(new PublicationCriteria(337));
criteria.Add(new SchemaTitleCriteria("News Portal"));
Query query = new Query(CriteriaFactory.And(criteria.ToArray<Criteria>()));
String[] results =  query.ExecuteQuery();

これは結果をまったく返しません。スキーマ名を再確認しました。この応答は期待されていますか?SchemaTitleCriteriaコンポーネントを動的コンポーネントプレゼンテーションとして公開する必要がありますか?アドバイスをいただければ幸いです。

4

2 に答える 2

13

DCP では「はい」と「いいえ」。すべてのコンポーネントを動的コンポーネント プレゼンテーション (DCP) として公開する必要はありません。同じことに気付き、スキーマに基づいて少なくとも 1 つの DCP を公開しない場合、スキーマ タイトルが Tridion Broker DB のスキーマ テーブルに公開されないことがわかりました (仕様によるものかどうかはわかりません)。スキーマに基づいて 1 つの DCP を公開すると、スキーマのタイトルが保存され、後続のクエリが機能しますが、最初の DCP を公開するまでは取得できません。

ただし、実際のシナリオでは、ブローカ クエリを実行して dcp を取得するため、間違いや誰かが見逃した場合を除いて、この動作は見られません。

于 2013-01-25T21:52:25.920 に答える
11

コンポーネントが最初の結果セットに存在するのに、2 番目の結果セットには存在しないのはなぜですか?

これは意図しない動作であり、SDL に報告する価値があると思います。

これを修正するには、SchemaTitleCriteria の代わりに ItemSchemaCriteria を使用スキーマタイトルではなくスキーマ ID に基づいてコンポーネントを取得する必要があります。

SchemaTitleCriteriaを使用するには、コンテンツ配信データベースにスキーマ タイトル情報が含まれるように、ニュース ポータル スキーマに基づくコンポーネントを少なくとも 1 つ、動的コンポーネント テンプレートとともに公開する必要があると想像してください。

于 2013-01-25T21:37:41.550 に答える