#c# #sitecore8
#c# #sitecore8
Вопрос:
Я настраиваю канал для мультимедийных элементов в sitecore и следовал руководству по настройке, и все работает нормально. Однако тег ссылки в ленте генерирует абсолютный путь к элементу мультимедиа в дереве содержимого, что-то вроде этого
Нам нужен URL-адрес изображения на сервере, например http://ecms-site1.intlsos.com/-/media/corporate/…./incident-occurs.mp3
Я унаследовал от класса PublicFeed, чтобы добавить дополнительное свойство в rss-канал, но мне нужна помощь в изменении поведения свойства link для возврата медиа-URL.
Спасибо
Ответ №1:
Для элементов мультимедиа вы должны использовать Sitecore MediaManager, а не LinkManager, как для обычных страниц, и указать MediaUrlOptions для управления абсолютными и относительными URL-адресами для ваших медиа-ресурсов. Приведенный ниже код определяет расширение для медиа-элемента Sitecore, чтобы сгенерировать для него абсолютный URL-адрес:
using Sitecore.Resources.Media;
public static string AbsoluteMediaItemUrl(this Sitecore.Data.Items.MediaItem item)
{
MediaUrlOptions mediaUrlOptions = new MediaUrlOptions
{
AlwaysIncludeServerUrl = true,
AbsolutePath = true
};
return MediaManager.GetMediaUrl(item, mediaUrlOptions);
}
Чтобы переопределить стандартную функциональность RSS-канала в Sitecore, вы должны создать свой пользовательский класс, унаследованный от Sitecore.Синдикация.PublicFeed и переопределить метод SyndicationItem renderItem (Item item). Затем вам необходимо сопоставить ваш вновь созданный класс с вашим элементом RSS-канала в Sitecore, чтобы указать, на какой пользовательский класс вы хотите ссылаться вместо стандартного PublicFeed.
Комментарии:
1. Привет, я пробовал это, и я получаю правильный URL-адрес элемента мультимедиа, однако, похоже, я не могу переопределить узел ссылки на готовый канал rss, который должен вернуть мне правильный URL
2. Вы, конечно, можете. Пожалуйста, смотрите Выше о том, как переопределить стандартный renderItem() в PublicFeed .