我正在尝试在SDL Tridion中创建一个模式来满足这些要求。
我有两个主要领域:
两个主要字段都是可重复的,并且应该是可移动的。
示例模式可能符合要求:
ABCD----AAAA----ABCD---AAAA
AAAA----ABCD----ABCD----AAAA
主要字段AAAA和ABCD应该从一个移到另一个。
假设我创建了一个创建了架构的组件,第一个主要字段为“AAAA”,第二个字段为“ABCD”,那么我应该可以将ABCD移到AAAA之上。
我尝试使用两个字段创建嵌入式架构:
选择主要字段:作为列表,我选择ABCD和AAAA作为TEXT类型。
文字:输入文字。
将此架构添加为多值的内容架构的一部分,允许“重新发布和重复”。
面临的问题:
需要解决方案:
如果我使用必需字段创建名称为“ABCD”和“AAAA”的两个嵌入式模式,是否可以将这些模式作为主内容模式中下拉列表的一部分添加?
如果用户选择嵌入式模式“ABCD”,则它应仅显示“XYZ”字段。如果用户选择“AAAA”,我应该将其子字段显示为“名称”和“值”。
如果这不可行,请您建议最好的解决方案以满足要求吗?
我正在使用DWT TBB和XSLT TBB进行演绎部分。
谢谢。
答案 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字段,反之亦然。
您的模板代码现在需要决定要显示的内容。如果填充了可嵌入模式中的所有字段,则需要选择要显示的内容,否则它只能显示输入的内容。您应该在可嵌入模式的字段描述中清除模板的逻辑,这样您就可以引导内容编辑器在哪种情况下需要哪些内容(在保存时由事件系统支持以验证正确性)。