UrlFormat for News Url
Hi there,
Firstly I just want to say what a great product I think Sitefinity CMS is. Bravo.
I'm a bit stuck on something. I've been trying to get rid of the date from the news url (/01/04/2011/this-is-a-test-page) and am having no luck.
I saw a thread on the forums about going into administration > settings > advanced > news > Providers > OpenAccessDataProviders > and adding in a new Parameter for UrlFormat. My key is UrlFormat and value is set to /special-offers/[UrlName]
But this doesn't seem to work, despite me resetting the web server, application pool etc etc.
Is there anywhere else that needs to be changed in order for me to get this to work please?
Looking forward to your reply.
Hi Jamie,
Thank you for contacting Telerik Support, and thank you for the nice feedback.
Concerning the issue you are describing, please note that the key you specify is case sensitive, and you are specifying value of UrlFormat, while the proper key is urlFormat - setting this should resolve the problem. Also, please also note that you have to restart the website and you will have to make "dummy" edits to your existing items so that their Urls are recompiled.
All the best,
Boyan Barnev
the Telerik team
Brilliant that worked, thank you Boyan.
Another quick question, is there a way of using the newsrotator (radrotator) but displaying pages within a specific parent page instead of a list of news items?
My code at the moment is:
protected void Page_Load(object sender, EventArgs e) RadRotator1.DataSource = App.WorkWith().NewsItems().Where(n => n.Status == ContentLifecycleStatus.Live).Get().Take(this.NewsLimit).ToList().Join(App.WorkWith().Images().Get().Where(i => i.Parent.Title == "Promotions" && i.Status == ContentLifecycleStatus.Live), item => item.Title.Value, image => image.Title.Value, (item, image) => new NewsItem = item, NewsImage = image ); RadRotator1.ItemDataBound += new RadRotatorEventHandler(RadRotator1_ItemDataBound); RadRotator1.DataBind(); void RadRotator1_ItemDataBound(object sender, RadRotatorEventArgs e) var link = e.Item.FindControl("newsLink") as HyperLink; var image = e.Item.FindControl("newsImage") as Image; var title = e.Item.FindControl("newsTitle") as Literal; var text = e.Item.FindControl("newsText") as Literal; NewsItem newsItem = (NewsItem)TypeDescriptor.GetProperties(e.Item.DataItem)["NewsItem"].GetValue(e.Item.DataItem); Telerik.Sitefinity.Libraries.Model.Image newsImage = (Telerik.Sitefinity.Libraries.Model.Image)TypeDescriptor.GetProperties(e.Item.DataItem)["NewsImage"].GetValue(e.Item.DataItem); if (image != null) image.ImageUrl = newsImage.MediaUrl; if (title != null) title.Text = newsItem.Title; if (text != null) text.Text = newsItem.Summary; if (link != null && TargetNewsPage != null) link.NavigateUrl = DataResolver.Resolve(newsItem, "URL", null, TargetNewsPage.Id.ToString()); protected PageNode TargetNewsPage get if (this.targetNewsPage == null) this.targetNewsPage = App.WorkWith().Pages().LocatedIn(Telerik.Sitefinity.Fluent.Pages.PageLocation.Frontend).Where(p => p.Page != null && p.Page.Controls.Where(c => c.ObjectType.StartsWith(typeof(NewsView).FullName)).Count() > 0).Get().FirstOrDefault(); //it can still be null in case there is no page with a NewsView on it return this.targetNewsPage; private PageNode targetNewsPage; public virtual int NewsLimit get return this.newsLimit; set this.newsLimit = value; private int newsLimit = 8;Hello Jamie,
Thank you for getting back to me. Can you please elaborate a little bit more on the functionality you demand? Generally it's not a problem to use the API to get pages and display links in the rotator, you can even feed them to some htmlreader and display their context, but just to make sure I got you correctly, please specify a particular use case scenario where you want this implemented.
Best wishes,
Boyan Barnev
the Telerik team
Hi Boyan,
Thanks for replying, apologies for the delay.
Currently, I have a special offers homepage and then child pages detailing the special offers. e.g.
- Special Offers
- 25% Discount
- Kids Go Free
I wanted to have a radrotator on the welcome page that looped through all these special child pages, but the only code I could find was the newsrotator. So, I tried the newsrotator but it just seems a bit too long winded having newsitem offers that eventually linked to the pages etc when I know the API is capable of just looping through the pages.
I hope that makes sense.
Thanks,
Jamie
Hi Jamie,
Thanks for the patience, and sorry about the delay. I've prepared a sample code for you which uses RadRotator to display links to all pages under a particular parent page. Please take a look at it and see if it suits your purpose. Also, please feel free to modify it according to your purposes - you can either associate some thumbnails to these links, as we are doing in the NewsRotator, or maybe use an iframe to display the pages's HTML.
Here's the template I've set which displays a hyperlink to the page and uses the page's title for text:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PageRotator.ascx.cs" Inherits="SitefinityWebApp.Controls.PageRotator" %><%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Web.UI" TagPrefix="sitefinity" %><%@ Register TagPrefix="sf" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %><sf:RadRotator Width="986px" Height="272" ItemWidth="986px" ItemHeight="272" id="RadRotator1" runat="server" RotatorType="AutomaticAdvance"><ItemTemplate> <asp:HyperLink runat="server" ID="pageLink" ><asp:Label runat="server" ID="pageTitle" Text='<%#Eval("Title") %>' WrapperTagName="h2" /> </asp:HyperLink> </ItemTemplate></sf:RadRotator>using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Telerik.Sitefinity;using Telerik.Sitefinity.GenericContent.Model;using Telerik.Sitefinity.Web.DataResolving;using Telerik.Sitefinity.Pages.Model;using Telerik.Sitefinity.Modules.Pages;namespace SitefinityWebApp.Controls public partial class PageRotator : System.Web.UI.UserControl protected void Page_Load(object sender, EventArgs e) RadRotator1.DataSource = App.WorkWith().Pages() .LocatedIn(Telerik.Sitefinity.Fluent.Pages.PageLocation.Frontend) .Where(p => p.Page != null && p.Parent.Title == "Blank" && p.Page.Status == ContentLifecycleStatus.Live) .Get(); RadRotator1.ItemDataBound += new Telerik.Web.UI.RadRotatorEventHandler(RadRotator1_ItemDataBound); RadRotator1.DataBind(); void RadRotator1_ItemDataBound(object sender, Telerik.Web.UI.RadRotatorEventArgs e) var link = e.Item.FindControl("pageLink") as HyperLink; if (link != null) link.NavigateUrl = ((PageNode)e.Item.DataItem).GetFullUrl();