初めに
プログラムでメディアアイテムを作成したい場合、MediaCreatorクラスを利用します。
MediaCreatorクラスはデフォルトでは Unversioned(バージョン管理なし)でメディアアイテムを作ってしまうため、今回は Versioned(バージョン管理あり)で特定の言語バージョンのみ作成する方法を記載します。
Sitecoreは 10.1.0を想定しています。
MediaCreatorの挙動
まずはデフォルトの MediaCreatorで言語バージョンを指定して、メディアアイテムを作成してみます。
MediaCreatorOptions options = new MediaCreatorOptions();
options.Language = Language.Parse("ja-JP");
options.Versioned = Media.UploadAsVersionableByDefault;
作成されたメディアアイテムを確認します。
言語バージョンを指定しているにも関わらず、Unversioned(バージョン管理無し)では全言語バージョンでアイテムが生成されます。
これは Website/App_Config/Sitecore.config内の UploadAsVersionableByDefault設定がデフォルトで falseに設定されているためです。
Versioned(バージョン管理あり)で特定の言語バージョンのみで生成するにはデフォルトの値を trueに変更するか、下記のように作成時に Versionedを trueに指定する必要があります。
MediaCreatorOptions options = new MediaCreatorOptions();
options.Language = Language.Parse("ja-JP");
options.Versioned = true;
Unversioned(バージョン管理なし)で特定の言語バージョンのメディアアイテムを作成
Sitecore.Resources.Mediaの中の MediaCreatorクラスの言語指定ロジックを確認します。
MediaCreatorの CreateItemメソッド内では GetItemMediaLanguagesを実行します。
上記のように GetItemMediaLanguagesで、作成する言語バージョンを決定を行っています。Versionedの場合のみ指定された言語を返します。
このメソッドをオーバーライドすることで、Unversionedの場合でも特定の言語バージョンでメディアアイテムを作成することができます。
以上です。
※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。