【问题标题】:How can I configure Sitecore so that it generates absolute links to media items?如何配置 Sitecore 以生成指向媒体项目的绝对链接?
【发布时间】:2011-05-12 12:16:07
【问题描述】:

<sc:Image><sc:FieldRenderer>,在渲染 MediaItem 时,生成如下所示的 html 代码:

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

注意src 属性中使用的相对路径:这意味着当这样的图像在多个页面上重复使用时,浏览器必须多次获取它(例如在页面http://example.com/http://example.com/about-us/ 上)。当我在代码中生成img 标记时,我可以使用以下sn-p 来强制使用绝对URL:

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

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

使用 Reflector 我可以看到 MediaOptions.AbsolutePath 控制我想要实现的行为,但我不知道如何为 Sitecore 内置控件设置它。在web.config 中设置Media.MediaLinkPrefixmediaPrefixes 似乎没有任何改变。

【问题讨论】:

    标签: performance url sitecore pagespeed


    【解决方案1】:

    我参与了一个项目,我们将媒体资产存储在 Akamai 的 CDN 上,因此我们不得不更改媒体 URL 的解析方式。

    我们通过更改 ExpandDynamicLinks() 来调整内置的 LinkProvider 类。我们还调整了Sitecore.Resources.Media.MediaProvider 并更新了GetMediaUrl() 方法。

    这些用于处理指向由字段渲染器生成的图像的链接以及在富文本编辑器中创建的链接。

    【讨论】:

    • 这就是我们目前解决这个问题的方式,但我希望有一个配置解决方案 - Reflector 显示 Sitecore 能够做到这一点,我只是不知道如何启用它。但如果没有显示配置答案,我会接受你的。
    • 我同意——我很想看到对此的配置解决方案,但我认为没有。 *手指交叉*
    • 我也没有找到配置解决方案。我工作的最后两个网站使用 CDN 来提供媒体项目,我们必须做一些非常相似的事情。
    • 这将是一个很好的机会来创建一个包含这些新类的共享源模块,然后是一个配置文件来修补默认设置。
    • 我们收到了 Sitecore 的回复 - 这是他们自己建议的解决方案。
    【解决方案2】:

    有一个更简单的解决方案。我的语法可能有点偏离 - 请随时纠正我,我会进行编辑。

    MediaManager.GetItemUrl(item, new MediaUrlOptions { AbsolutePath = true });
    

    【讨论】:

    • 正确的语法是MediaManager.GetMediaUrl(item, new MediaUrlOptions { AbsolutePath = true });
    【解决方案3】:

    Create a Link to Sitecore Media Item

    您将无法使用上述 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多