Возможно ли получить URL-адрес с MediaManager.GetMediaUrl
, который всегда включает в себя часть сервера?
Получить медиа-URL, включая серверную часть
Ответ 1
Просто, чтобы это произошло, в Sitecore 7 параметр AlwaysIncludeServerUrl
также включен в MediaUrlOptions
(я не знаю, с какой версии Sitecore)
Вот так:
MediaUrlOptions muo = new MediaUrlOptions();
muo.AlwaysIncludeServerUrl = true;
String url = MediaManager.GetMediaUrl((MediaItem)item, muo);
Ответ 2
Я обнаружил, что для создания полнофункциональных URL-адресов для медиа-элементов будет работать следующее:
public static string GetMediaUrlWithServer(MediaItem mediaItem, Item item = null)
{
item = item ?? Sitecore.Context.Item;
var options = new UrlOptions {AlwaysIncludeServerUrl = true, AddAspxExtension = false};
var itemUrl = LinkManager.GetItemUrl(item, options);
var mediaOptions = new MediaUrlOptions {AbsolutePath = true};
var mediaUrl = MediaManager.GetMediaUrl(mediaItem, mediaOptions);
return itemUrl + mediaUrl;
}
Произведенные URL будут относиться к item
, поэтому вы можете указать ссылку на свой домашний элемент вместо Sitecore.Context.Item
Ответ 3
Недавно я ответил на аналогичный вопрос в Stack Overflow. Я считаю, что ответ относится и к вашим.
Краткое описание: для этого нет никакой конфигурации, вам нужно переопределить некоторые из встроенных методов для этого. См. Приведенную выше ссылку для получения точных данных.
Ответ 4
Да, вы можете это сделать!
Правильный способ установки этого параметра указывается в файле конфигурации в разделе linkManager, где у вас есть это и остальные параметры, касающиеся того, как будут разрешены ваши URL-адреса. Здесь весь раздел, вас интересует параметр alwaysIncludeServerUrl:
<linkManager defaultProvider="sitecore">
<providers>
<clear />
<add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel"
alwaysIncludeServerUrl="true"
addAspxExtension="true"
encodeNames="true"
languageEmbedding="asNeeded"
languageLocation="filePath"
shortenUrls="true"
useDisplayName="false" />
</providers>
</linkManager>