SITECORE MANIA 開発者向け技術ブログ

その他

中川

中川

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

 

以上です。



※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。

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

Sitecore導入に関するご相談・資料ダウンロード

導入をご検討・ご依頼の方や、サービスについてご不明点がございましたらお気軽にお問い合わせください。

Sitecoreの運用問題を解決する

既にSitecoreを導入しているお客様向けサービス