-2

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

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

我怎样才能做到这一点?

4

4 回答 4

7

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

第二 - 你保存。

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

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

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

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

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

于 2012-05-08T12:57:36.627 回答
7

查看您的问题/要求以了解您到底在寻找什么,这样我们就可以回答最好的和相关的。

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

如果那是您正在寻找的内容,那么您需要执行以下操作:

  1. 您需要使用 CoreService 读取架构字段(因为您知道架构 URI)
  2. 现在您知道需要为其创建内容的字段类型(嵌入式/组件链接等)
  3. 在他的回答中使用“Puf”指向的链接。

请注意,如果该字段在 Tridion Schema 中标记为必填项,则您必须填写一个值,并且它必须与 schema 中定义的字段类型匹配。

通过核心服务示例代码读取模式字段可以在这里找到

于 2012-05-08T14:23:30.533 回答
5

通过核心服务更新组件的字段已在此处得到解答:在 SDL Tridion 2011 中使用核心服务更新组件

该帖子指向您可以在此处找到的帮助程序类:使用 SDL Tridion 2011 中的核心服务更新组件

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

于 2012-05-08T14:00:02.120 回答
0

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

如果用例用于具有内联编辑(Experience Manager 或 SiteEdit)的 Tridion 设置,那么正确的方法是内容/组件类型。这些定义了一个带有“垃圾默认值”的参考组件,对作者的说明,甚至保存位置上下文。

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

  1. CTRL+C
  2. CTRL+V

创建“参考组件”需要一次性设置。当然,我们可以通过使用核心服务复制项目来模仿这种行为(如果“无标题的副本”不是一个合适的名称)。

在这种情况下,我还将复制一份——请参阅使用核心服务创建 Tridion 项目的通用解决方案

  • 需要默认值的字段可以在架构中具有实际默认值。
  • “垃圾值”对作者没有多大帮助,始终考虑良好的默认值,例如在字段的情况下进行适当的选择或说明(也许)。10 秒的更改几乎不会花费任何开发成本,但会影响所有未来的组件和创建它们的作者。
于 2012-08-24T03:56:16.650 回答