【问题标题】:Creating blank dummy Components which contain mandatory Fields with the SDL Tridion 2011 Core Service使用 SDL Tridion 2011 核心服务创建包含必填字段的空白虚拟组件
【发布时间】:2012-05-08 12:48:18
【问题描述】:

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

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

我怎样才能做到这一点?

【问题讨论】:

  • 请指定您的 SDL Tridion 版本,并详细说明上下文。您在使用 TOM.NET、Core Service、GUI 等吗?您的架构中有任何必填字段吗?您可以考虑手动制作空白组件,然后使用复制和粘贴进行克隆。
  • 我正在使用核心服务,它也有必填字段,版本是 sdl tridion 2011
  • Nuno 在下面为您提供了一些很好的提示,但是您无法保存具有空必填字段的组件。也许您可以解释您要达到的目标,以便我们提出更多有用的建议。也请考虑通过area51.stackexchange.com/proposals/38335/… 加入 SDL Tridion 的 Area 51 提案
  • @克里斯。我只有一个模式 id,在此基础上,我想使用核心服务在 tridion 2011 中创建一个没有数据或默认数据的虚拟组件。还有一些字段是强制性的和嵌入的。那么有什么帮助吗?
  • 也许你可以解释你的最终目标。我不相信您想要的结果是有一个空组件。即使出于某种原因这是您的目标,如果有必填字段,您也不能这样做。你明白强制是什么意思吗?

标签: tridion


【解决方案1】:

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

第二个 - 你保存。

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

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

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

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

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

【讨论】:

  • 感谢 Nuno 的关注,但架构中可能存在必填字段。如果可以的话,您能否分享一些代码,这对这种情况会有所帮助。
  • 如果您向我们解释您想要实现的目标,那将非常有帮助。
  • 我只有一个模式 id,在此基础上,我想使用核心服务在 tridion 2011 中创建一个包含虚拟数据的虚拟组件。还有一些字段是强制性的和嵌入的。那么这方面有什么帮助吗?
  • 您不能存储没有值的必填字段。因此,使用 ReadSchemaFields,查找该字段是否为必填项,存储一个值 - 如果可以绕过它,必填字段的意义何在?
【解决方案2】:

查看您的问题/要求以了解您到底在寻找什么,以便我们尽可能提供最相关的答案。

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

如果这是您要找的,那么您需要做的是:

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

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

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

【讨论】:

    【解决方案3】:

    这里已经回答了通过核心服务更新组件的字段:Updating Components using the Core Service in SDL Tridion 2011

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

    如果这些对您创建组件没有帮助,我建议您发布您的代码,而不是让我们为您编写。

    【讨论】:

      【解决方案4】:

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

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

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

      1. CTRL+C
      2. CTRL+V

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-11
        • 2012-03-24
        • 2012-05-13
        • 2012-09-24
        相关资源
        最近更新 更多