gpt4 book ai didi

tridion2009 - 代理中的Tridion 2009嵌入式元数据存储格式

转载 作者:行者123 更新时间:2023-12-04 03:33:31 24 4
gpt4 key购买 nike

我是Tridion的新手,我必须实现一些功能,该功能将允许内容编辑器创建组件并为其分配多个日期范围(可用日期)。这些将需要从代理查询以提供搜索功能。

最初,这仅需要一个开始和结束日期,因此被实现为单独的元数据字段。

我建议在模式的“可用日期”元数据字段中使用嵌入式模式,以允许分配多个开始日期和结束日期。

但是,由于该字段现在允许多个值,因此数据以逗号分隔的值存储在代理中,位于“KEY_STRING_VALUE”列中,而不是作为日期值存储在“KEY_DATE_VALUE”列中,就像只允许单个值存储时一样起始值和结束值。

例如。
KEY_NAME | KEY_STRING_VALUE
结束日期| 2012-04-30T13:41:00,2012-06-30T13:41:00
开始日期| 2012-04-21T13:41:00,2012-06-01T13:41:00

现在,这导致我的经纪人查询出现问题,因为我不再可以使用简单的查询逻辑来根据日期检索我进行搜索所需的项目。

在开始编写C#逻辑以解析这些逗号分隔的日期并基于这些日期进行搜索之前,我想知道是否有人在过去有类似的要求/经验,并以不同的方式实现了这一点,从而减少了所需的代码解析量,并且使用代理查询来完成搜索。

我正在Tridion 2009上进行开发,但是使用5.3 Broker(出于遗留原因),因此查询当前看起来像这样(对于单个开始/结束日期):

query.SetCustomMetaQuery((KEY_NAME='end_date' AND KEY_DATE_VALUE>'" + startDateStr + "') AND (ITEM_ID IN(SELECT ITEM_ID FROM CUSTOM_META WHERE KEY_NAME='start_date' AND KEY_DATE_VALUE<'" + endDateStr + "')))";

任何帮助是极大的赞赏。

最佳答案

这是一个复杂的场景,因为您将必须遍历所有DCP并解析这些字符串以确定是否符合搜索条件

有一种方法可以在代理中将元数据(逗号分隔)转换为单个值,但是字段名称必须不同Range1,Range2,....,RangeN
您可以使用一个部署程序扩展来做到这一点,在该扩展程序中,您可以更改程序包的XML结构并以不同的值(1,2,..,n)转换每个字符串。
如果您不熟悉部署程序扩展,并且不能100%解决您的情况,那么此扩展可能会花费一些时间。

这样的问题是,您仍然必须应用多个条件来检索这些值,并且始终必须设置一个限制(与可以根据需要添加任意值的用户相对)

样本:

query.SetCustomMetaQuery((KEY_NAME='end_date1'
query.SetCustomMetaQuery((KEY_NAME='end_date2'
query.SetCustomMetaQuery((KEY_NAME='end_date3'
query.SetCustomMetaQuery((KEY_NAME='end_date4'

可能最快,最简单的方法是使用多值字段,使用不同的字段。我知道这不是最通用的方案,并且对业务需求有影响,但是可以简化开发。

我之前的评论仅是在使用Broker API的情况下进行的,但是如果它是体系结构的一部分,则可以利用搜索引擎。
您可以索引Broker数据库并处理数据。
使用搜索引擎API,您可以提取组件/组件模板的ID,并使用Broker API检索适当的信息

关于tridion2009 - 代理中的Tridion 2009嵌入式元数据存储格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10316439/

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