-1

Tridion 2011 のフォルダー内のコンポーネントを反復処理し、コンポーネントの公開ステータスに基づいて CDS で使用されるカスタム XML を作成しています。問題を理解できるように、以下に例を示します。

  1. フォルダーに 10 個のコンポーネントがあり、すべて公開されているとします。XML を公開すると、XML は 10 個のアイテムに対して生成されます。
  2. ここで、コンポーネントの 1 つを変更し、公開しません。
  3. コンポーネントの変更後、XML を再度公開します。次に、変更されたコンポーネントの XML も更新されます。そのため、そのコンポーネントの公開されたバージョンと XML にある の間に違いが生じます。

したがって、公開されたバージョンのコンポーネントと同期しているデータのみが含まれるように、カスタム XML を公開したいと考えています。

4

3 に答える 3

2

したがって、次のことを行います。

  1. 最後に公開されたコンポーネントの XML を特定する
  2. その XML とコンポーネントの現在の XML の間の変更を決定する
  3. 変更のみを公開する

Tridion は、(少なくともコンテンツ マネージャーでは) 公開されたバージョンを追跡しません。そのため、最も近い方法は、コンポーネントが最後に公開されたのがいつであるかを調べ、その時点の XML を取得することです。この質問は、そのアプローチに関する詳細情報の出発点として最適です。その XML に基づいて、上記の手順 2 と 3 を実行できます。

または、コンポーネントをレンダリングしているときに、「どこか」(アプリケーション データなど) に公開した XML のスナップショットを保持することもできます。次にコンポーネントが公開されたときに、その XML を取得して、上記の手順 2 と 3 を実行できます。

これらのソリューションのいずれについても、最初から実装する必要があるかどうか本当に疑問に思うはずです。Tridion のデフォルトのレンダリング動作の一部をオーバーライドし、そのアーキテクチャの一部を回避しています (コンテンツ管理とコンテンツ配信の間の明確で明示的な切断、前者は後者について「何も知らない」)。時間。この使用例では、CDS と TCM が同期しなくなったときに何が起こるかを考える必要があります。単にコンテンツを突然再公開するだけでは十分ではありません。「前回の公開から何も変更されていないため、何も公開しない」と判断するコードがそこにあるからです。

于 2012-07-23T18:18:01.160 に答える
2

いきなりの結論で申し訳ありませんが、この質問はTridionの理解不足から生じたものだと強く感じています。Tridion での公開は、アイテムが「公開済み」であること、つまり外部に公開する準備ができていることを示すフラグを立てるだけではありません。これは、一部の (多くの) コンテンツ管理システムがどのように動作するかを知っています (これが、この質問をしている理由を説明している可能性があります)。ただし、Tridion では、公開とは、アイテムが実際に (物理的に) コンテンツ管理環境からコンテンツ配信環境に転送されることを意味します。この環境には、アイテムが最後に公開されたときの状態を表すコンテンツのバージョンが常に含まれています。これは、それらを作成したのが公開の行為そのものであるためです。

私の意見では、あなたが本当に求めているのは、この公開機能を再構築する方法です。これは決して良い考えではありません。代わりに、Bart のコメントを真剣に受け止め、Tridion が提供するコンテンツ配信 API の 1 つ (ブローカー API または OData Web サービス) を検討する必要があります。必要に応じて、ブローカーの上に構築され、完全な Tridion データ モデルを公開する DD4T を調べることができます。

于 2012-07-25T12:55:19.700 に答える
1

Then your solution is to

  1. Write an event handler on the Publish Transaction Save event
  2. Which saves the publish info (version data) to Application Data of the published Component

I'm mentioning the Publish Transaction Save event because from there you can ensure that the publish info is only saved when the transaction is successfull.

Also be aware that this publish info can go out of sync when the event handler fails to execute, and you might loose all of the application data when moving to another environment.

So when this information is absolutely crucial I would save it to a separate database, and not to Application Data.

于 2012-07-24T07:14:30.870 に答える