Tridion Content Deliveryは、同じマルチメディア コンポーネントの複数のバリアントを格納できます。そのような各バリアントには、それを識別する ID があり、ID のないバリアント (新しいバージョンでは #def# の ID) は、デフォルトのバリアントとして知られています。
DWT から画像を参照すると、レンダリング エンジンが DWT を実行するときに、アイテムとしてパッケージに自動的に追加されます。その後、このアイテムは、デフォルトの終了アクションの一部であるデフォルトの「パッケージ内のバイナリを公開」TBB によって後で処理されます。パッケージ TBB のパブリッシュ バイナリは、バイナリを呼び出してパブリッシュします。これは、Tridion フォーラム(ログインが必要)AddBinary
でパブリッシュされたほとんどのデフォルト TBB の元のコードを参照することで確認できます。
appliedTemplateUri = new TcmUri(item.Properties[Item.ItemPropertyTemplateUri]);
...
engine.AddBinary(itemUri, appliedTemplateUri, targetStructureGroup,
data, fileName);
呼び出されるAddBinary
メソッドは、TOM.NET CHM で次のように定義されています。
public abstract string AddBinary(
TcmUri componentUri,
TcmUri templateUri,
TcmUri targetLocation,
byte[] data,
string fileName
)
- componentUri
このアイテムが参照するマルチメディア コンポーネント
- templateUri
この AddBinary 呼び出しが実行されるコンテキストのテンプレート (バリアント ID として使用)
- targetLocation
バイナリを公開する場所 (null の場合、標準パスに公開)
- data
パブリッシュするバイナリ データ
- fileName
ファイルを公開するファイル名
への最後の呼び出しでわかるようにAddBinary
、Publish Binaries in Package TBB はプロパティを使用して (を聞いたことがない場合はここItem.Properties
を参照)、公開するバリアントを決定します (プロパティが現在ではない)。
このすべての知識があれば、作業は非常に簡単になります。MMC のパッケージに 2 つのバイナリ項目があり、それぞれが異なる値のItem.ItemPropertyTemplateUri
プロパティを持つことを確認する必要があります。
デフォルトの Image Resizer TBB は、サイズ変更するアイテムのバイナリ コンテンツを置き換え、このプロパティを設定しません。したがって、記述しなければならないコードは、アイテムを複製するプリプロセッサ TBB か、アイテムを再追加するポストプロセッサ TBB のいずれかです。どちらの場合も、TBB は "magic" プロパティも設定する必要があります。
便利なリンク: