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,我只假设这用于按组件模板搜索记录。我假设是因为还有另一个标准类称为PageTemplateCriteria. 如果这个假设无效,请纠正我。

编辑

附加信息:我检查了代理数据库中的COMPONENTS,SCHEMATEMPLATES表,但没有找到已发布的组件。默认情况下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必须去数据库才能使这种情况起作用。

Also check your cd_licenses.xml file, if it is expired, if it is (even if the cd_storage_conf.xml is correct), the items will end up on the file system.

于 2012-11-28T12:17:44.897 回答