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

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

有帮助吗?

解决方案 5

我能够通过编写一些查询来直接替换Tridion数据库中的模式名称和引用来做到这一点。它运行良好,但是我只有在启动架构与结束模式完全一样建议。否则,它将破坏组件。

其他提示

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

这是一个微不足道的情况是,当您仅复制模式,因此两个模式都是相同的。实际上,您通常有一个更改架构的原因,在这种情况下,您可能想在组件上使用getXml()和updatexml(),并使XSLT将XML转换为符合新模式的东西。在这种情况下,您可以简单地更新XSLT中的架构参考。

正如乔纳森(Jonathon)所说,您可以为此使用自定义页面,但请记住,这是一个一次性操作,应该由程序员和管理员设计/执行,因此,如果您使用自定义页面,则可能要删除之后。

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

Tridion Content Porter使您可以将内容和模式从一个CMS导出到另一个CMS。它也可以用来移动项目 之间 出版物。这是“复制”架构及其重复使用内容的一种选择(以及更改实时数据之前备份任何工作!)。

请注意不要更改命名空间或要保留的任何XML字段(虽然可以说明和模式名称可以)。可以肯定的是,尤其是使用实时数据,请进行清洁导出,以防万一在使用这些答案中的任何一个。

不可能通过内容管理器接口更改Tridion组件的架构。但是,这可以使用“自定义页面”来实现,因为API允许通过代码更改组件的模式。

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

  • 课程:tridion.contentmanager.contentmanagement.component
  • 属性:公共模式架构{get;放; }
  • 描述:获取或设置组件内容和元数据的架构。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top