4

特定のコンポーネント テンプレートを使用して、ブローカー データベースからすべてのコンポーネント プレゼンテーションをレンダリングしようとしています。これまでのクエリ コードは次のとおりです。

using Tridion.ContentDelivery.DynamicContent;
using Tridion.ContentDelivery.DynamicContent.Query;

ItemTemplateCriteria CTCriteria = new ItemTemplateCriteria(1111);
PublicationCriteria pubCriteria = new PublicationCriteria(10);
AndCriteria finalCriteria = new AndCriteria(pubCriteria, CTCriteria);

Response.Write("<h1>START</h1>");

Query q = new Query();
q.Criteria = finalCriteria;

string[] result = q.ExecuteQuery();

if (result != null && result.Length > 0)
{
    foreach (string r in result)
    {
        Response.Write("<h1>" + r + "</h1>");
    }
}
else {
    Response.Write("Result is null or 0-length.");
}
Response.Write("<h1>END</h1>");

結果を出し続けていnullます。動的コンテンツの公開設定がcd_storage_conf.xmlあり、Broker データベースでいくつかのコンポーネント プレゼンテーションが公開されています。

このドキュメントからの私の理解では、このアプローチを使用して関連するコンポーネント URI を取得できるはずです。

私の質問:

  1. Queryクラスの機能に関する私の理解は正しいですか?
  2. 構成とコードに関して何か見逃しましたか?
  3. コンポーネント テンプレートによってブローカー コンテンツを取得する他の方法はありますか?

編集

追加情報: に関してItemTemplateCriteriaは、これが Component Template によるレコードの検索に使用されると想定しただ​​けです。と呼ばれる別の基準クラスがあるため、私は推測しましたPageTemplateCriteria。この仮定が無効である場合は、修正してください。

編集

追加情報: ブローカ データベースのCOMPONENTSSCHEMAおよびTEMPLATESテーブルを調べましたが、公開されたコンポーネントが見つかりませんでした。のデフォルト ルールではcd_storage_conf.xml、公開されたコンテンツはブローカに送信される必要があります。参考までに、私の設定は次のとおりです。

<Publication Id="57" defaultStorageId="brokerdb" cached="false">
    <Item typeMapping="ComponentPresentation" storageId="brokerdb" cached="false" />
    <Item typeMapping="BinaryMeta" cached="true" storageId="brokerdb"/>
    <Item typeMapping="BinaryVariant" cached="true" storageId="brokerdb"/>
    <Item typeMapping="Binary" storageId="defaultFile" cached="true"/> 
    <Item typeMapping="ComponentMeta" cached="true" storageId="brokerdb"/>
    <Item typeMapping="ComponentPresentationMeta" cached="true" storageId="brokerdb"/>
    <Item typeMapping="ItemMeta" cached="true" storageId="brokerdb"/>
    <Item typeMapping="LinkInfo" cached="true" storageId="defaultDataFile"/>
    <Item typeMapping="DynamicLinkInfo" cached="true" storageId="defaultDataFile"/>
    <Item typeMapping="Page" cached="true" storageId="defaultFile"/> 
    <Item typeMapping="PageMeta" cached="true" storageId="defaultDataFile"/>
    <Item typeMapping="Reference" storageId="brokerdb"/>
    <Item typeMapping="Schema" storageId="brokerdb"/>
</Publication>
4

1 に答える 1

5

cd_storage_conf.xmlとデータベースを再確認して、アイテムがそこに保存されていることを確認します。データがファイル システムに送信される場合、クエリは実行できません。

ComponentPresentationMeta具体的には、このシナリオが機能するには、DB にアクセスする必要があると思います。

またcd_licenses.xml、有効期限が切れている場合はファイルを確認してください。有効期限が切れている場合は(cd_storage_conf.xml正しい場合でも)、アイテムはファイルシステムに配置されます。

于 2012-11-28T12:17:44.897 に答える