使用SDL Tridion 2011核心服务创建包含必填字段的空白虚拟组件

时间:2012-05-08 12:48:19

标签: tridion

我想使用核心服务在SDL Tridion 2011中创建一个空白组件。我在流程开始时获得的唯一信息是Schema URI。模式可以包含任何类型的字段(文本,rtf,数字日期,嵌入等),其中一些可能是强制性的。

据我所知,对于必填字段,我需要在其中保存一些虚拟值,这是可以接受的,因为它们将在以后手动更改。

我怎样才能实现这个目标?

4 个答案:

答案 0 :(得分:7)

首先 - 确保在架构中将所有字段都设置为可选字段,否则这将无法正常工作。

第二 - 你保存。

当可选字段没有值时,它将没有XML表示。如果您有一个定义如下组件的模式:

  • 字段1
  • 字段2
  • 字段3

当所有字段都是可选字段并且您在字段2中保存值时,Tridion将存储以下内容:

<Content xmlns="yourNamespace"><Field2>SomeValue</Field2></Content>

如果您的某个字段不是必填字段,那么您必须提供一个值。如果您正在使用CoreService,那么您可以使用ReadSchemaFields类来获取字段和一些有关它们的信息 - 类型,强制/可选等。

答案 1 :(得分:7)

查看您的问题/要求,了解您正在寻找的内容,以便我们尽可能回答相关问题。

您是否在询问“如何使用核心服务编写用于创建组件的通用代码?”而不是创建具有特定模式的组件,而不是预先知道所有字段。

如果您正在寻找,那么您需要做以下事情:

  1. 您需要使用CoreService读取架构字段(因为您知道架构URI)
  2. 现在您知道为
  3. 创建内容所需的字段类型(嵌入式/组件链接等)
  4. 在答案中使用“Puf”指向的链接。
  5. 请注意,如果字段在Tridion Schema中标记为必需,则必须填写一个值,并且必须与模式中定义的字段类型匹配。

    通过核心服务示例代码阅读架构字段可以找到here

答案 2 :(得分:5)

通过核心服务更新组件的字段已在此处得到解答:Updating Components using the Core Service in SDL Tridion 2011

该帖子指向您可以在此处找到的帮助程序类:Updating Components using the Core Service in SDL Tridion 2011

如果这些内容无法帮助您创建组件,我建议您发布代码,而不是要求我们为您编写代码。

答案 3 :(得分:0)

我们询问用例,因为填写特定模式的特定字段的代码仅适用于一个环境。可以自动确定字段的代码可以重复使用。

如果用例适用于具有内联编辑(Experience Manager或SiteEdit)的Tridion设置,则正确的方法是内容/组件类型。它们定义了一个带有“垃圾默认值”的引用组件,作者的指令,甚至还保存了位置上下文。

如果用例是允许作者创建虚拟组件的能力,那么这是开箱即用的:

  1. CTRL+C
  2. CTRL+V
  3. 创建“参考组件”所需的一次性设置。当然,通过使用核心服务复制项目,我们可以模仿这种行为(如果“无标题副本”不合适)。

    在这种情况下,我也会复制一份 - 见general solution for creating Tridion items using the Core Service

    • 需要默认值的字段可以在架构中具有实际默认值。
    • “垃圾值”对作者的帮助不大,总是考虑好的默认值,例如适当的选择或字段(可能)的说明。 10秒的改变成本几乎没有任何成本,但会影响所有未来的组件和创建它们的作者。