8

<sc:Image>そして<sc:FieldRenderer>、MediaItem をレンダリングするときに、次のような html コードを生成します。

<img src="~/media/twitter.gif" alt="Twitter" width="100" height="22" />

属性で使用されている相対パスに注意してくださいsrc。これは、そのような画像が複数のページで再利用される場合、ブラウザはそれを複数回取得する必要があることを意味します (たとえば、ページhttp://example.com/http://example.com/ )私たちについて/)。コードでタグを生成するimg場合、次のスニペットを使用して絶対 URL を強制できます。

string url = Sitecore.StringUtil.EnsurePrefix('/',
    Sitecore.Resources.Media.MediaManager.GetMediaUrl(media));

メディア URL の先頭にスラッシュを強制するように Sitecore を構成するにはどうすればよいですか?

Reflector を使用MediaOptions.AbsolutePathすると、実現したい動作を制御していることがわかりますが、Sitecore の組み込みコントロールに設定する方法がわかりません。設定Media.MediaLinkPrefixまたはmediaPrefixesインweb.configは何も変わらないようです。

4

3 に答える 3

9

私は Akamai の CDN にメディア アセットを保存するプロジェクトに取り組んでいたため、メディア URL の解決方法を変更する必要がありました。

LinkProviderを変更して、組み込みクラスを適合させましたExpandDynamicLinks()。また、メソッドを適応させSitecore.Resources.Media.MediaProvider、更新しましたGetMediaUrl()

これらは、フィールド レンダラーによって生成された画像へのリンクと、リッチ テキスト エディター内で作成されたリンクを処理するためのものでした。

于 2011-05-12T18:21:11.360 に答える
3

これにはもっと簡単な解決策があります。構文が少しずれている可能性があります。お気軽に修正してください。編集します。

MediaManager.GetItemUrl(item, new MediaUrlOptions { AbsolutePath = true });
于 2013-10-03T23:31:54.817 に答える
0

Sitecore メディア アイテムへのリンクを作成する

上記の LinkManager.GetItemUrl() メソッドを使用してメディア アイテムをフェッチすることはできません。Sitecore には、メディア URL を取得するための別の API があります。

public string ResolveSitecoreMediaURL(Sitecore.Data.Items.Item item)
{
   MediaUrlOptions mediaOptions= new MediaUrlOptions();
   mediaOptions.AlwaysIncludeServerUrl = true;
   mediaOptions.AbsolutePath =true;
   return Sitecore.Resources.Media.MediaManager.GetMediaUrl(item,mediaOptions);
}

LinkManager に URLOptions があったように、MediaManager には絶対 URL と相対 URL を制御できる MediaUrlOptions が付属しています。

于 2016-06-04T14:10:06.663 に答える