gpt4 book ai didi

Tridion DynamicContent.Query 按组件模板搜索

转载 作者:行者123 更新时间:2023-12-05 01:16:15 25 4
gpt4 key购买 nike

我正在尝试使用某个组件模板呈现代理数据库中的所有组件演示。这是到目前为止的查询代码:

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 数据库中发布的一些组件演示。

我的理解来自 this document也就是说,我应该能够使用这种方法检索相关的组件 URI。

我的问题 :
  • 是我对Query的能力的理解类正确吗?
  • 我错过了什么,配置和代码?
  • 有没有其他方法可以通过组件模板检索代理内容?

  • 编辑 :

    附加信息:关于 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>

    最佳答案

    仔细检查您的 cd_storage_conf.xml和用于检查项目的数据库存储在那里。如果您的数据将进入文件系统,它将无法查询。

    具体我觉得ComponentPresentationMeta必须转到数据库才能使此方案起作用。

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

    关于Tridion DynamicContent.Query 按组件模板搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13598452/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com