如何将嵌入式模式作为SDL Tridion 2011 SP1中内容模式的下拉列表传递

时间:2012-04-23 13:36:47

标签: tridion tridion2009

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

我有两个主要领域:

  1. ABCD,其中一个子字段为“XYZ”
  2. AAAA,有两个子字段,即“名称”和“值”
  3. 两个主要字段都是可重复的,并且应该是可移动的。

    示例模式可能符合要求:

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

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

    假设我创建了一个创建了架构的组件,第一个主要字段为“AAAA”,第二个字段为“ABCD”,那么我应该可以将ABCD移到AAAA之上。

    我尝试使用两个字段创建嵌入式架构:

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

    2. 文字:输入文字。

    3. 将此架构添加为多值的内容架构的一部分,允许“重新发布和重复”。

      面临的问题:

      • 由于两个主要字段的字段不相同,我无法为其输入数据,两个主要字段的公共子字段都不满足需要..

      需要解决方案:

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

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

      如果这不可行,请您建议最好的解决方案以满足要求吗?

      我正在使用DWT TBB和XSLT TBB进行演绎部分。

      谢谢。

2 个答案:

答案 0 :(得分:1)

我不相信使用开箱即用的SDL Tridion Web Schema支持这一点(虽然最近一些很好的未记录的架构变化已经渗透到产品中)。 Tridion Web Schema使用XSD中的序列来控制字段的顺序(和数字),这会阻止您使用具有两种类型的嵌入式架构的多值字段。但是,您可以使用复杂的架构(即通过设计自己的架构或使用源选项卡修改使用GUI构建的架构来自行建模数据),但可能会更长时间使用GUI编辑内容。

无论如何,您是否可以使用多值组件链接字段而不是嵌入式架构?这样,您可以将字段链接到AAAA或ABCD类型的项目,并按任意顺序放置它们。

答案 1 :(得分:1)

如果你想留在Tridion Web Schemas的范围内,这确实是不可能的。正如Chris解释的那样,如果您开始使用复杂模式,则会松开基于表单的UI来编辑组件。

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

您的模板代码现在需要决定要显示的内容。如果填充了可嵌入模式中的所有字段,则需要选择要显示的内容,否则它只能显示输入的内容。您应该在可嵌入模式的字段描述中清除模板的逻辑,这样您就可以引导内容编辑器在哪种情况下需要哪些内容(在保存时由事件系统支持以验证正确性)。