1

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

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

4

5 回答 5

2

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

最简单的情况是您刚刚复制粘贴了架构,因此两个架构是相同的。在实践中,您通常有更改架构的理由,在这种情况下,您可能希望在组件上使用 GetXml() 和 UpdateXml(),并让 XSLT 将 XML 转换为符合新架构的内容。在这种情况下,您可以简单地更新 XSLT 中的模式引用。

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

于 2011-08-22T17:50:20.830 回答
1

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

于 2010-12-30T14:59:13.337 回答
1

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

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

于 2011-02-26T09:38:37.277 回答
0

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

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

  • 类:Tridion.ContentManager.ContentManagement.Component
  • 属性:公共架构架构 { 获取;放; }
  • 描述:获取或设置组件内容和元数据的架构。

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

于 2010-12-30T12:12:28.563 回答
-1

我可以通过编写一些查询来直接在 tridion 数据库中替换模式名称和引用来做到这一点。它工作得很好,但我只会在起始模式与结束模式完全一样的情况下推荐这个。否则会破坏组件。

于 2011-03-01T16:54:22.583 回答