5

tridion からいくつかのページ/動的コンポーネントを発行すると、発行時に現在実行中/レンダリング中のパッケージに外部マルチメディア ファイル/コンテンツ (例: jpg 画像) を追加することができます。オリジナルの公開コンテンツ?これは、tridion レンダラー/リゾルバーのカスタマイズを使用して達成できますか?はいの場合、いくつかの情報を提供してください。

*注: * パブリッシュ時にパッケージにプッシュする必要があるバイナリ コンテンツは、tridion のマルチメディア コンポーネントとして存在しません。tridion CMS 外の別のファイルの場所にあります。代わりに、パブリッシュされたコンポーネント内で使用されるスタブ マルチメディア コンポーネントがいくつかあります。 /ページにはダミー画像があります。パブリッシュ(レンダリング/解決)時にスタブ イメージを元のイメージに置き換える予定です。

DAM ツールに膨大な量のバイナリ コンテンツが保存されているため、そのデータを tridion のマルチメディア コンポーネントとして再作成する必要はありません。DAM ツールにクエリを実行してそのデータを使用し、いくつかの論理参照を使用して tridion パッケージに添付し、維持する予定です。スタブ マルチメディア コンプ tcmid と、参照用のマッピング DB 内の元のコンテンツとの間の 1 対 1 のマッピング)。

公開時に外部バイナリ コンテンツをパッケージに添付するための解決策があればお知らせください。

4

2 に答える 2

10

最善かつ最も簡単な方法は、Tridion が提供するすぐに使用できるメカニズムを使用することです。新しいマルチメディア コンポーネントを作成し、リソース タイプのドロップダウンで [外部] を選択して、オブジェクトへの URL を入力します。URL でアドレス指定できる限り、希望どおりに機能します (アイテムはパッケージに追加され、配信サーバーに送信されます)。

これで十分でない場合は、はい、自分でパッケージに追加できます。私は過去に次のようなコードでこれを行いました:

FileInfo file = // Weird logic to get a FileInfo object from external system
Item item = package.GetItem("My original Item");
item.SetAsStream(file.OpenRead());

これにより、元のコンポーネントのコンテンツが、必要な実際のファイルに置き換えられました。これは、元のコンポーネントがマルチメディア コンポーネントでもある場合に有効です。そうでない場合は、自分の名前などで新しいアイテムを作成してください。可能であれば、代わりにすぐに使えるプロセスを使用してください。

PS: FileInfo クラス

于 2012-09-05T15:52:00.817 に答える
9

Nunoが提案したように、最良の方法は「外部」リソースタイプでマルチメディアコンポーネントを使用することです。これらを手動で作成する必要はない場合があります。コアサービスまたはAPIプログラムを使用して自動化できます。

以前に実行時にzipファイルを作成し、次のコードを使用して同じものをパッケージに追加するために使用した別の方法。それが役立つことを願っています。

using (MemoryStream ms = new MemoryStream())
                {
                    zip.Save(ms);
                    downloadAllInOneURL = String.Format("ZipAsset{0}.zip", uniqueZipID);
                    downloadAllInOneURL = m_Engine.PublishingContext.RenderedItem.AddBinary(ms, downloadAllInOneURL, "", "application/zip").Url;
                    downloadAllInOneSize = getSize(ms.Length);

                } 
于 2012-09-06T07:20:45.447 に答える