我想使用核心服务在 SDL Tridion 2011 中创建一个空白组件。我在流程开始时拥有的唯一信息是 Schema URI。Schema 可以包含任何类型的字段(文本、rtf、数字日期、嵌入等),其中一些可能是强制性的。
我知道对于必填字段,我需要在其中保存一些虚拟值,这是可以接受的,因为稍后将手动更改它们。
我怎样才能做到这一点?
我想使用核心服务在 SDL Tridion 2011 中创建一个空白组件。我在流程开始时拥有的唯一信息是 Schema URI。Schema 可以包含任何类型的字段(文本、rtf、数字日期、嵌入等),其中一些可能是强制性的。
我知道对于必填字段,我需要在其中保存一些虚拟值,这是可以接受的,因为稍后将手动更改它们。
我怎样才能做到这一点?
首先 - 您确保架构中的所有字段都设置为可选,否则这将永远无法工作。
第二 - 你保存。
当可选字段没有值时,它将没有 XML 表示。如果您有一个定义如下组件的架构:
当所有字段都是可选的并且您在字段 2 中保存了一个值时,Tridion 将存储以下内容:
<Content xmlns="yourNamespace"><Field2>SomeValue</Field2></Content>
如果您的某个字段不是强制性的,那么您必须提供一个值。如果您使用的是 CoreService,那么您可以使用ReadSchemaFields
类来获取字段和有关它们的一些信息 - 什么类型、强制/可选等。
查看您的问题/要求以了解您到底在寻找什么,这样我们就可以回答最好的和相关的。
您是否在询问“如何使用核心服务编写用于创建组件的通用代码?” 而不是创建具有预先知道所有字段的特定架构的组件。
如果那是您正在寻找的内容,那么您需要执行以下操作:
请注意,如果该字段在 Tridion Schema 中标记为必填项,则您必须填写一个值,并且它必须与 schema 中定义的字段类型匹配。
通过核心服务示例代码读取模式字段可以在这里找到
通过核心服务更新组件的字段已在此处得到解答:在 SDL Tridion 2011 中使用核心服务更新组件
该帖子指向您可以在此处找到的帮助程序类:使用 SDL Tridion 2011 中的核心服务更新组件
如果这些不能帮助您创建组件,我建议您发布您的代码,而不是要求我们为您编写它。
我们询问用例,因为为特定模式填写特定字段的代码仅适用于一种环境。可以自动确定字段的代码是可重用的。
如果用例用于具有内联编辑(Experience Manager 或 SiteEdit)的 Tridion 设置,那么正确的方法是内容/组件类型。这些定义了一个带有“垃圾默认值”的参考组件,对作者的说明,甚至保存位置上下文。
如果用例是允许作者创建虚拟组件的能力,这是开箱即用的:
CTRL+C
CTRL+V
创建“参考组件”需要一次性设置。当然,我们可以通过使用核心服务复制项目来模仿这种行为(如果“无标题的副本”不是一个合适的名称)。
在这种情况下,我还将复制一份——请参阅使用核心服务创建 Tridion 项目的通用解决方案。