2012-04-12 14 views
0

私はsitecoreにパイプラインを追加しています。私がしようとしていることは、すべてのメディアアイテムを取得し、すべてのメディア資産をCDNに入れるときにURLを変更することです。問題は簡単です、どのようにすべてのメディアアイテムを入手するのですか?誰も知っている?カスタムアセンブリでsitecoreですべてのメディアアイテムを取得するには?

+1

の呼び出しによって返されたURLを制御するために、様々な構成設定を活用を見てみたいことがあり?パイプラインプロセッサに、要求されているアイテムのURLを変更させないのはなぜですか? –

+0

あなたのヒントをありがとう、私は本当に持っている必要があります。究極の目標は、イメージベーステンプレートにチェックボックスフィールドを追加することによってメディアアイテムのURLを切り替えることができることです。問題は、メディアアイテムのURLを変更する方法です。 – user822211

+0

私は以前に同様の質問に答えました:http://stackoverflow.com/questions/5977809/how-can-i-configure-sitecore-so-that-it-generates-absolute-links-to-media-items/ 5982547 –

答えて

1

はこのような何かを:

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); 
    } 
} 
+0

ありがとう!しかし、メディアアイテムのURLを表すそのようなフィールドはなく、メディアアイテムのURLによって使用されるテンプレートはありません。 – user822211

+0

これを確認してください.http://stackoverflow.com/questions/5977809/how-can-i-configure-sitecore-so-that-it-generates-absolute-links-to-media-items/5982547 – foxtrotZulu

+0

メディアライブラリのルートを得るためのより良い方法はSitecore.ItemIDs.MediaLibraryRootです –

0

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

アイテムの実際のURLを制御する多くの要素があるので、アイテムのURLを取得するために利用するメソッドがいくつかあります。レンダリング時間です。アイテムへのURLを取得するために使用されなければならないメソッドは次のようになります。

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

あなたはfoxtrotZuluが示唆されて何かを行うことができます。基本的には、CDNの項目へのURLを格納する各MediaItemに独自のフィールドを追加します。手動で、またはプログラミングで、各メディア項目のカスタムURLフィールドの値を設定する必要があります。次に、レンダリング時間で、MediaManagerの呼び出しではなく、そのフィールド値を使用します。

また、私はあなたがパイプライン内のすべてのメディアアイテムを取得しようとしている理由を理解していないSitecore.Resources.Media.MediaManager.GetMediaUrl()

関連する問題