You need to inherit RSSInboudPipe class and override virtual method ConvertToWraperObject, which is used when syndication items are being build.
An example how to replace an existing pipe can be found here:
Let us know if you find any difficulties with provided solution. Thanks!
Thank you for being the most amazing .NET community! Your unfailing support is what helps us charge forward!
We'd appreciate your vote for Telerik in this year's DevProConnections Awards. We are competing in mind-blowing 20 categories and every vote counts! VOTE for Telerik NOW >>
A custom module is just a possible option.
You can replace the pipe at Global.asax ASP.NET application file for example.
Let me know if you find any difficulties! Thanks!
Here are concrete 3 steps that need to be done in order to implement custom rss pipe:
1) Inherit RSSInboundPipe and override method ConvertToWraperObject. Here you need to set values of contentText and summaryText from your WordPress RSS.
RSSInboundPipeCustom : RSSInboundPipe
Telerik.Sitefinity.Publishing.WrapperObject ConvertToWraperObject(System.ServiceModel.Syndication.SyndicationItem item)
WrapperObject obj =
var feedItem = item
//RSS items don't have expiration
// TODO: Grab <content:encoded> which contains the full post and set it to contentText variable
var content = feedItem.Content
contentText = content.Text;
// TODO: Grab <description> which contains the post summary and set it to summaryText variable
summaryText = feedItem.Summary.Text;
(feedItem.Links.Count > 0)
backLink = feedItem.Links.Uri.AbsoluteUri;
(feedItem.Authors.Count > 0)
var author = feedItem.Authors;
//Remove the default Rss inbound pipe
//This code will add the RSSInboundPipe to the registered pipes with the original inbound rss pipe name
//so when the publishing system try's to use the rss pipe will use the new one
sender, EventArgs e)
Bootstrapper.Initialized -= Bootstrapper_Initialized;
Bootstrapper.Initialized += Bootstrapper_Initialized;
sender, Telerik.Sitefinity.Data.ExecutedEventArgs args)
At the moment it is not possible to achieve this without code. You should inherit and replace the RssInbound pipe. I've found some sample code that shows how to retrieve the content:encoded property of the syndication item:
StringBuilder sb = new StringBuilder();
foreach (SyndicationElementExtension extension in item.ElementExtensions)
XElement ele = extension.GetObject<XElement>();
if (ele.Name.LocalName == "encoded" && ele.Name.Namespace.ToString().Contains("content"))
sb.Append(ele.Value + "<br/>");
Let me know if you have any difficulties with extending the rss inbound pipe.
At the moment our RSS inbound pipes can work with one pipe at a time. This means that you will have to substitute the built in one as describe earlier in this post.
Sorry, I guess I wasn't clear.
I've already customized the inbound pipe, but how do I associate the outbound pipe with a specific provider? In the Admin back end, under feeds and notifications, I can choose News, but what if I have more than one type of news? It seems like the feeds and notifications configuration should let me specify. I don't want the RSS feed in my normal news, but rather in the special one I have created for it.
I guess I'm missing something fundamental. So, here's the basic conceptual model:
Inbound Pipe ==> Publishing Point ==> Content Outbound Pipe
Let's say I want to create a new custom ContentOutboundPipe, which I will then connect up with the content from my RSS feed. I know that I would create a new class, inherit from ContentOutboundPipe and then set up the outbound pipe to map to whatever fields I wanted.
But when I'm using a customized persistent outbound pipe, where/how do I set which provider I'm using? Lets say I created a special module using your modulebuilder. How do I point the data coming from my InboundRssCustomPipe to my custom ContentOutboundCustomPipe to this new module? I imagine it has something to do with PipeSettings, but I don't see any examples that do other than the default action in the Feeds and Notifications.
PublishingManager manager = PublishingManager.GetManager();
var bbcInboundPipeSettings = manager.GetPipeSettings().Where(p => p.PipeName ==
I'm using SF 7.1.How can I set custom field values? Like I have Category, Tags, Yes / No, and Image field.
I tried to set my custom fields like this but it didn't work.
var tags =
var tagElements = item.ElementExtensions.Select(i => i.GetObject<XElement>()).Where(i => i.Name.LocalName ==