Tridion DynamicContent.Query按组件模板搜索

Ian*_*kem 4 tridion tridion-content-delivery tridion-2011

我正在尝试使用特定组件模板从代理数据库中呈现所有组件演示文稿.这是目前为止的查询代码:

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>");
Run Code Online (Sandbox Code Playgroud)

我不断得到null结果.我确实cd_storage_conf.xml在Broker数据库中发布了动态内容发布设置和一些组件演示.

我从该文档中了解到,我应该能够使用这种方法检索相关的组件URI.

我的问题:

  1. 我对Query班级能力的理解是否正确?
  2. 我错过了什么,配置和代码吗?
  3. 是否有其他方法可以按组件模板检索代理内容?

编辑:

附加信息:关于ItemTemplateCriteria,我只假设它用于按组件模板搜索记录.我假设因为有另一个标准类叫做PageTemplateCriteria.如果此假设无效,请更正我.

编辑:

附加信息:我检查了COMPONENTS,SCHEMA并且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>
Run Code Online (Sandbox Code Playgroud)

Chr*_*ers 5

仔细检查您cd_storage_conf.xml和数据库以检查项目是否存储在那里.如果您的数据进入文件系统,则无法查询.

具体来说,我认为ComponentPresentationMeta必须转到数据库才能使此方案正常工作.

同时检查您的cd_licenses.xml文件,如果它已过期,如果是(即使它cd_storage_conf.xml是正确的),项目将最终在文件系统上.