4

我正在尝试在 SDL Tridion 中创建一个模式来满足这些要求。

我有两个主要领域:

  1. ABCD,它有一个子字段为“XYZ”
  2. AAAA,它有两个子字段,即“名称”和“值”

两个主要字段都是可重复的,并且应该是可移动的。

示例模式可能看起来符合要求:

ABCD----AAAA----ABCD---AAAA
AAAA----ABCD----ABCD----AAAA

主要字段 AAAA 和 ABCD 应该从一个移到另一个。

假设我使用创建的架构创建一个组件,第一个主要字段为“AAAA”,第二个字段为“ABCD”,那么我应该能够将 ABCD 移动到 AAAA 上方。

我尝试创建一个包含两个字段的嵌入式模式:

  1. 选择主字段:作为列表,我选择 ABCD 和 AAAA 作为 TEXT 类型。

  2. 文字:输入文字。

将此模式作为内容模式的一部分添加为多值,允许“重新发布和重复”。

面临的问题:

  • 由于两个主要字段的字段不通用,我无法为其输入数据,并且两个主要字段的公共子字段不能满足需要..

需要的解决方案:

  • 如果我使用必填字段创建两个名为“ABCD”和“AAAA”的嵌入式架构,我可以将这些架构添加为主要内容架构中下拉列表的一部分吗?

  • 如果用户选择嵌入模式“ABCD”,它应该只显示“XYZ”字段。如果用户选择“AAAA”,我应该将其子字段显示为“名称”和“值”。

如果这不可行,您能否建议满足要求的最佳解决方案?

我将 DWT TBB 和 XSLT TBB 用于再现部分。

谢谢你。

4

2 回答 2

1

我不相信使用开箱即用的 SDL Tridion Web Schemas 支持这一点(尽管最近有许多很棒的未记录的模式更改已经悄悄进入产品)。Tridion Web Schemas 使用 XSD 中的序列来控制字段的顺序(和数字),这会阻止您拥有具有两种类型的 Embedded Schema 的多值字段。但是,您可以使用复杂的模式(即通过设计自己的模式或使用源选项卡修改使用 GUI 构建的模式自己建模数据),但可能不再能够使用 GUI 编辑您的内容。

无论如何,您可以使用多值组件链接字段而不是嵌入式模式吗?这样,您可以将字段链接到 AAAA 或 ABCD 类型的项目,并将它们按您想要的任何顺序排列。

于 2012-04-23T14:09:42.727 回答
1

如果您想留在 Tridion Web Schemas 的领域内,这确实是不可能的。正如 Chris 所解释的,如果您开始为此使用复杂模式,您将失去基于表单的 UI 来编辑组件。

我能想到的唯一解决方案是将 ABCD 和 AAAA 的所有字段添加到可嵌入模式中,并使所有内容都不是强制性的。如果内容验证很重要,那么您可以实现一个事件系统来检查组件的保存。在这里您可以进行条件检查,如果您的可嵌入架构的 ABCD 部分的字段已填充,它将忽略或什至可以清除 AAAA 字段,反之亦然。

您的模板代码现在需要决定要显示的内容。如果嵌入模式上的所有字段都填满,则需要选择显示什么,否则只能显示输入的内容。您应该在可嵌入Schema的字段描述中明确模板的逻辑,以便您可以引导内容编辑器进入哪个场景需要什么内容(保存时由事件系统支持以验证正确性)。

于 2012-04-24T13:18:06.643 回答