Как настроить Sitecore таким образом, чтобы он генерировал абсолютные ссылки на элементы мультимедиа? - PullRequest
8 голосов
/ 12 мая 2011

<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 в коде, я могу использовать следующий фрагмент кода для принудительной установки абсолютного URL:

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

Как настроить Sitecore для принудительной косой черты в URL-адресах мультимедиа?

Используя Reflector, я вижу, что MediaOptions.AbsolutePath контролирует поведение, которого я хочу достичь, но я не знаю, как я могу установить его для встроенных элементов управления Sitecore. Установка Media.MediaLinkPrefix или mediaPrefixes в web.config, похоже, ничего не меняет.

Ответы [ 3 ]

8 голосов
/ 12 мая 2011

Я работал над проектом, в котором мы хранили медиаресурсы в CDN Akamai, поэтому нам пришлось изменить способ разрешения URL-адресов мультимедиа.

Мы адаптировали встроенный класс LinkProvider, изменив ExpandDynamicLinks(). Мы также адаптировали Sitecore.Resources.Media.MediaProvider и обновили метод GetMediaUrl().

Они предназначались для обработки ссылок на изображения, созданные полевыми средствами визуализации, и ссылок, созданных в редакторе Rich Text.

3 голосов
/ 04 октября 2013

Существует гораздо более простое решение для этого.Возможно, я немного ошибаюсь с моим синтаксисом - пожалуйста, не стесняйтесь исправлять меня, и я внесу изменения.

MediaManager.GetItemUrl(item, new MediaUrlOptions { AbsolutePath = true });
0 голосов
/ 04 июня 2016

Создание ссылки на 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...