Как получить медиа-ссылку в rss-канале sitecore

#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 .