Due to backward compatibility with Kentico CMS versions prior to 5.5, it is also possible to create a dedicated page with an RSS feed. This way of creating RSS feeds is obsolete now, as syndication web parts provide a much more convenient way of creating RSS feeds.
The default installation contains a simple CMSPages\NewsRss.aspx page which shows how to build your own RSS feed. It works with news items, but you can modify the code so that it displays a different type of documents.
The following code example shows the code of the NewsRss.aspx page:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RSS.aspx.cs" Inherits="RSSNews" %> <%@ Register Assembly="CMS.Controls" Namespace="CMS.Controls" TagPrefix="cc1" %><?xml version="1.0" encoding="utf-8" ?> <rss version="2.0"> <channel> <title>News RSS</title> <link><![CDATA[<%=HttpContext.Current.Request.Url.AbsoluteUri.Remove(HttpContext.Current.Request.Url.AbsoluteUri.Length - HttpContext.Current.Request.Url.PathAndQuery.Length) + HttpContext.Current.Request.ApplicationPath%>]]></link> <description>News RSS Feed</description> <cc1:cmsrepeater ID="NewsRepeater" runat="server" OrderBy="NewsReleaseDate DESC" ClassNames="cms.news" TransformationName="cms.news.rssitem" SelectedItemTransformationName="cms.news.rssitem" Path="/news/%"></cc1:cmsrepeater> </channel> </rss> |
As you can see, the page contains only RSS elements with dynamic code. The RSS items are rendered using a CMSRepeater control with appropriate transformation.
The code behind looks like this:
[C#]
protected void Page_Load(object sender, EventArgs e) { Response.ContentType = "text/xml"; } |
This code changes the output content type to XML.
How to create an RSS feed page for a different document type
If you want to display articles instead of news in your RSS feed, you will need to follow these steps:
1. | Create a new ASPX page called articles_rss.aspx. |
2. | Copy and paste all code from the rss.aspx file except for the <%@ Page %> directive. |
3. | Change the following properties of the CMSRepeater control: |
• | SelectNodesOrderBy: DocumentModifiedWhen DESC |
• | SelectNodesClassName: cms.article |
• | TransformationName: cms.article.rssitem |
• | SelectedItemTransformationName: cms.article.rssitem |
• | SelectNodesPath: /% |
• | SelectNodesWhere: leave empty |
4. | Add the same line of code as used in the rss.aspx.cs code behind file (Response.ContentType = "text/xml") to articles_rss.aspx.cs. |
5. | Create the trasformation cms.article.rssitem like this in Site Manager -> Development -> Document Types -> ... edit Article ... -> Transformations: |
<item> <guid isPermaLink="true"><![CDATA[<%# GetAbsoluteUrl(GetDocumentUrl()) %>]]></guid> <title><![CDATA[<%# Eval("ArticleTitle") %>]]></title> <description><![CDATA[<%# Eval("ArticleText") %>]]></description> <pubDate><%# Convert.ToDateTime(Eval("DocumentModifiedWhen")).ToString("r") %></pubDate> <link><![CDATA[<%# GetAbsoluteUrl(GetDocumentUrl()) %>]]></link> </item> |
This code renders the particular items.
Page url: http://devnet.kentico.com/docs/devguide/index.html?creating_rss_feeds_manually.htm