Here's something that I did for a client this weekend that might interest others. The client wanted to know why their DNN site's syndicated content was not displaying Channel information, including the company logo. Looking at this issue sparked an idea. The long and short explaination is that browsers allow a simple point and click method to view and subscribe to your syndicated content. However, most browser techology does not display much of your syndicated Channel elements, including the image, and description. Most often you get the site Title, but little else. I explained that it really wasn't the action of DNN. Of course, that fell flat. So, I came up with a way to do it. Actually, two ways, but the first involved having them always add an item with the content they wanted to use in their 'branding' efforts. That's really not practical for large sites generating many newsfeeds, and some DNN modules allow syndication but really can't support 'branding' per say.
So, I decided to make a small change to the core code (oh, no!), because it really is something that should be available anyway. In fact, RSS v2.0 specifications state there should always be at least 1 item in a newsfeed, and if your Announcements module has expired or no entries, but is set to syndicate, well you don't get anything but a site title. So why not make a small mod that is always included in your syndicated content. What I did calls for a change to the RSSHandler.vb in the /Library/Services/Syndication folder. Here's the small change...
Private Function AddSiteBranding() As GenericRssElement
Dim item As GenericRssElement = New GenericRssElement()
item("title") = GetPortalSettings.PortalName
item("description") = GetPortalSettings.Description
item("link") = AddHTTP(GetDomainName(Request))
item("pubDate") = Now().ToUniversalTime.ToString("r")
item("guid") = AddHTTP(GetDomainName(Request))
Return item
End Function
I call the routine above the line that does the test for searchItemResults in the PopulateChannel sub...
Channel.Items.Add(AddSiteBranding())
If searchResults IsNot Nothing Then
See my blog for a more complete discussion, and leave comments or feedback. I'm sure more professional programmers could do more, but this is working for me, and the client has what they want, and are happy campers. Now, they have their 'branding' and a marketing edge back.