我正在为sitecore设置媒体项目的订阅源,并按照设置指南进行操作,一切正常。但是,Feed中的链接标记会生成内容树中媒体项的绝对路径,如下所示
我们想要的是服务器上的图像的网址,如http://ecms-site1.intlsos.com/-/media/corporate/..../incident-occurs.mp3
我继承自PublicFeed类以在rss feed中添加额外属性,但需要帮助更改link属性的行为以返回媒体URL。
谢谢
对于媒体项目,您应使用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);
}
为了覆盖Sitecore中的标准RSS提要功能,您必须创建从Sitecore.Syndication.PublicFeed继承的自定义类并覆盖SyndicationItem RenderItem(Item item)方法。接下来,您需要将新创建的类映射到Sitecore中的RSS Feed项,以指定要引用的自定义类,而不是标准的PublicFeed类。