private void AddEnclosure( SyndicationItem syndicationItem, Sitecore.Data.Items.Item item, Sitecore.Syndication.FeedRenderingParameters parameters) { Sitecore.Diagnostics.Assert.ArgumentNotNull(syndicationItem, "syndicationItem"); Sitecore.Diagnostics.Assert.ArgumentNotNull(item, "item"); Sitecore.Diagnostics.Assert.ArgumentNotNull(parameters, "parameters"); Sitecore.Data.Fields.LinkField field = item.Fields[parameters.EnclosureField]; if (field != null) { Sitecore.Data.Items.MediaItem targetItem = field.TargetItem; if (targetItem != null) { Sitecore.Resources.Media.MediaUrlOptions options = new Sitecore.Resources.Media.MediaUrlOptions { AbsolutePath = true, UseItemPath = true }; string mediaUrl = Sitecore.Resources.Media.MediaManager.GetMediaUrl(item, options); if (!String.IsNullOrEmpty(mediaUrl)) { mediaUrl = Sitecore.Web.WebUtil.GetFullUrl(mediaUrl); string size = targetItem.Size.ToString(); string mimeType = targetItem.MimeType; syndicationItem.ElementExtensions.Add( String.Format("enclosure url=\"{0}\" length=\"{1}\" type=\"{2}\"", mediaUrl, size, mimeType), String.Empty, String.Empty); } } } }
public override SyndicationItem RenderItem() { Sitecore.Data.Items.Item item = this.GetItem(); Sitecore.Diagnostics.Assert.IsNotNull(item, "item"); Sitecore.Syndication.FeedRenderingParameters feedParams = Sitecore.Syndication.FeedRenderingParameters.Parse(this.Parameters); SyndicationItem syndicationItem = new SyndicationItem { Id = item.ID.ToString() }; if (!String.IsNullOrEmpty(feedParams.TitleField)) { syndicationItem.Title = new TextSyndicationContent( RenderField(item, feedParams.TitleField), TextSyndicationContentKind.Plaintext); } if (!String.IsNullOrEmpty(feedParams.BodyField)) { syndicationItem.Content = new TextSyndicationContent( RenderField(item, feedParams.BodyField), TextSyndicationContentKind.Html); } this.AddLink(item, syndicationItem); if (!String.IsNullOrEmpty(feedParams.DateField)) { this.RenderDate(item, feedParams, syndicationItem); } if (!String.IsNullOrEmpty(feedParams.AuthorField)) { syndicationItem.Authors.Add(new SyndicationPerson(item[feedParams.AuthorField])); } if (!String.IsNullOrEmpty(feedParams.EnclosureField)) { this.AddEnclosure(syndicationItem, item, feedParams); } return(syndicationItem); }
private void RenderDate( Sitecore.Data.Items.Item item, Sitecore.Syndication.FeedRenderingParameters feedParams, SyndicationItem syndicationItem) { DateTimeOffset minValue; DateTime dateTime = DateUtil.IsoDateToDateTime(item[feedParams.DateField], DateTime.MaxValue); if (dateTime == DateTime.MaxValue) { Sitecore.Diagnostics.Log.Warn( "RSS couldn't parse date from the '{0}' field on the {1} item. Using item updated date instead.".FormatWith(new object[] { feedParams.DateField, item.Uri }), this); dateTime = item.Statistics.Updated; } try { if (dateTime == DateTime.MinValue) { minValue = DateTimeOffset.MinValue; } else if (dateTime == DateTime.MaxValue) { minValue = DateTimeOffset.MaxValue; } else { minValue = new DateTimeOffset(dateTime); } } catch (ArgumentOutOfRangeException) { minValue = DateTimeOffset.Now; } syndicationItem.PublishDate = minValue; }