如何更改现有tridion组件的架构

时间:2010-10-12 20:11:12

标签: schema tridion

我在tridion中有一些为特定模式设置的组件项。我希望能够将这些项的架构更改为更新的架构。新架构保留了旧架构的所有现有属性,因此不会丢失数据。在这种情况下,不可能只改变现有的架构。

有谁知道是否可以这样做?

5 个答案:

答案 0 :(得分:2)

您可以通过为组件的Schema属性分配新值并保存它来更改组件的架构。当然,保存组件将要求组件针对新架构进行验证。

对于这种情况的简单情况是,您只是复制粘贴模式,因此两个模式都是相同的。实际上,您通常有理由更改模式,在这种情况下,您可能希望在组件上使用GetXml()和UpdateXml(),并使XSLT将XML转换为符合新模式的XML。在这种情况下,您只需更新XSLT中的架构引用即可。

正如Jonathon所说,你可以使用自定义页面,但请记住,通常这是一次性操作,应该由程序员和管理员设计/执行,所以如果你使用自定义页面,你可能想要在事后删除它。

答案 1 :(得分:1)

Tridion GUI不允许您更改组件上的架构是有原因的:即使两个架构有一些共同的字段,您的组件很可能在这样的更改后丢失其内容。 要避免这种情况,请确保模式具有相同的目标名称空间。在这种情况下,如果在两个模式中都定义了一个字段,那么即使在更改了模式之后,该组件也将保留其值。

答案 2 :(得分:1)

Tridion内容移植器允许您将内容和架构从一个CMS导出到另一个CMS。它还可用于在出版物之间移动项目。这是“复制”架构及其内容以供重用(以及在更改实时数据之前备份任何工作!)的一个选项。

注意不要更改名称空间或您想要保留的任何XML字段(尽管描述和模式名称都可以)。可以肯定的是,尤其是对于实时数据,请在使用任何这些答案之前进行干净导出。

答案 3 :(得分:0)

无法通过Content Manager界面更改Tridion组件的架构。但是,这可以使用“自定义页面”来实现,因为API允许通过代码更改组件的模式。

取自SDL Tridion 2009文档(模板实施手册(TOM.NET)2009):

  • 类:Tridion.ContentManager.ContentManagement.Component
  • 属性:public Sc​​hema Schema {get;组; }
  • 描述:获取或设置组件内容和元数据的模式。

Tridion开发人员论坛(TOPIC_ID = 2899)上有一个项目(包括代码示例)。但是,由于这是一个封闭的论坛,我不确定在这里复制代码的合法性。

答案 4 :(得分:-1)

我能够通过编写一些查询来直接替换tridion数据库中的模式名称和引用。它工作正常,但我只推荐这个,如果起始模式完全像结束模式。否则它会破坏组件。