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));

如何配置 Sitecore 以强制媒体网址中的前导斜杠?

使用 Reflector 我可以看到它MediaOptions.AbsolutePath控制了我想要实现的行为,但我不知道如何为 Sitecore 内置控件设置它。设置Media.MediaLinkPrefixmediaPrefixes输入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 有一个单独的 API 来获取媒体 URL。

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 带有一个 MediaUrlOptions ,您可以在其中控制绝对和相对 URL。

于 2016-06-04T14:10:06.663 回答