0

サイトコアにパイプラインを追加しています。私がやろうとしているのは、すべてのメディア アイテムを取得し、URL を変更して、すべてのメディア アセットを CDN に入れることです。問題は単純です。すべてのメディア アイテムを取得するにはどうすればよいでしょうか。誰か知ってる?

4

2 に答える 2

2

カスタムアセンブリで、次のようにします。

Sitecore.Data.Items.Item home = db.GetItem("/sitecore/media library");
using (new Sitecore.SecurityModel.SecurityDisabler())
    {
        alterItem(home);
    }

protected void alterItem(Sitecore.Data.Items.Item root)
{       

    foreach (Sitecore.Data.Items.Item itm in root.Children)
    {        

      //follow "absolute url" example below and edit each media item as you enumerate

      //Use recursion to loop through the entire tree under the root item
      alterItem(itm);
    }
}
于 2012-04-12T21:44:56.270 に答える
0

Sitecore メディア ライブラリ ツリーをたどってアイテムの URL を変更することはできません。主な理由は、 a MediaItem(またはItemそのことについては any) に のプロパティがないことですURL。アイテムを指す URL は、多くの構成設定 (アイテムが存在するサイト、リンクのプレフィックス、現在の言語、「ファイル」拡張子など) によって決まります。

アイテムの実際の URL を制御する要因は多数あるため、レンダリング時にアイテムの URL を取得するために利用できる方法がいくつかあります。アイテムへの URL を取得するために使用するメソッドは次のとおりです。

  • Sitecore.Links.LinkManager.GetItemUrl()
  • Sitecore.Resources.Media.MediaManager.GetMediaUrl()

foxtrotZulu が提案していることを実行できます。MediaItem基本的に、CDN 上のアイテムへの URL を格納する独自のフィールドをそれぞれに追加します。メディア アイテムごとにカスタム URL フィールドの値を手動またはプログラムで設定する必要があります。次に、レンダリング時に、 への呼び出しではなく、そのフィールド値を使用しますMediaManager

の呼び出しによって返される URL を制御するために、さまざまな構成設定を活用することも検討してください。Sitecore.Resources.Media.MediaManager.GetMediaUrl()

于 2012-04-13T13:39:48.960 に答える