1

特定のスキーマ用に設定されたtridionのコンポーネントアイテムがいくつかあります。それらのアイテムのスキーマを新しいスキーマに変更できるようにしたいと思います。新しいスキーマは、古いスキーマが持っていた既存のプロパティをすべて保持するため、データが失われることはありません。この状況では、既存のスキーマを変更することはできません。

これが可能かどうか誰かが知っていますか?

4

5 に答える 5

2

コンポーネントのSchemaプロパティに新しい値を割り当てて保存するだけで、コンポーネントのスキーマを変更できます。もちろん、コンポーネントを保存するには、コンポーネントが新しいスキーマに対して検証する必要があります。

これの些細なケースは、スキーマをコピーして貼り付けたばかりであり、したがって両方のスキーマが同一である場合です。実際には、通常、スキーマを変更する理由があります。その場合、コンポーネントでGetXml()とUpdateXml()を使用し、XSLTでXMLを新しいスキーマに準拠したものに変換する必要があります。このシナリオでは、XSLTのスキーマ参照を更新するだけです。

Jonathonが言うように、これにはカスタムページを使用できますが、通常、これはプログラマーと管理者が設計/実行する必要がある1回限りのアクションであるため、カスタムページを使用する場合は、おそらく削除する必要があります。その後それ。

于 2011-08-22T17:50:20.830 に答える
1

Tridion Content Porterを使用すると、コンテンツとスキーマを1つのCMSから別のCMSにエクスポートできます。パブリケーション間でアイテムを移動するためにも使用できます。これは、スキーマとそのコンテンツを「複製」して再利用する(また、ライブデータを変更する前に作業をバックアップする)ための1つのオプションです。

名前空間や保持したいXMLフィールドを変更しないように注意してください(ただし、説明とスキーマ名は問題ありません)。確かに、特にライブデータの場合は、これらの回答のいずれかを使用する前に備えて、クリーンなエクスポートを実行してください。

于 2011-02-26T09:38:37.277 に答える
1

Tridion GUI でコンポーネントのスキーマを変更できないのには理由があります。2 つのスキーマに共通のフィールドがある場合でも、変更後にコンポーネントの内容が失われる可能性が非常に高いからです。これを回避するには、スキーマのターゲット名前空間が同じであることを確認してください。その場合、両方のスキーマでフィールドが定義されていると、スキーマが変更された後でも、コンポーネントはその値を保持します。

于 2010-12-30T14:59:13.337 に答える
0

コンテンツマネージャインターフェイスを介してTridionコンポーネントのスキーマを変更することはできません。ただし、APIではコードを介してコンポーネントのスキーマを変更できるため、これは「カスタムページ」を使用して実現できます。

SDL Tridion 2009のドキュメント(テンプレート実装マニュアル(TOM.NET)2009)から引用:

  • クラス:Tridion.ContentManager.ContentManagement.Component
  • プロパティ:public Sc​​hema Schema {get; セットする; }
  • 説明:コンポーネントのコンテンツとメタデータのスキーマを取得または設定します。

Tridion開発者フォーラム(TOPIC_ID = 2899)には、これに関する項目(コードサンプルを含む)があります。ただし、これは非公開のフォーラムであるため、ここでコードを複製することの合法性については確信が持てません。

于 2010-12-30T12:12:28.563 に答える
-1

I was able to do this by writing some queries to replace the schema names and references directly within the tridion database. It worked fine, but I would only recommend this if the starting schema is EXACTLY like the end schema. Otherwise it'll break the components.

于 2011-03-01T16:54:22.583 に答える