SITECORE MANIA 技術ブログ

2021.09.25 その他

中川

中川

MediaCreatorで作成されるメディアアイテムの言語バージョンについて

初めに

プログラムでメディアアイテムを作成したい場合、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の場合でも特定の言語バージョンでメディアアイテムを作成することができます。

 

以上です。

 

この記事を読んだ人はこちらの記事も読んでます

お問い合わせ・資料請求

LYZONにご相談下さい

ご依頼ご質問等まずは私達にお気軽にご相談下さい。

お電話でのお問い合わせ

03-5803-0587平日9:00~18:00