Add a custom URL to the sitemap
The following article describes how to insert a custom URL in Sitefinity CMS sitemap.
You do this by using the ISitemapGeneratorBeforeWriting event that is raised during the sitemap generation.
To attach to the ISitemapGeneratorBeforeWriting event and to modify the collection of entries in the sitemap, perform the following:
- Open your project in Visual Studio
- Open the
Global.asaxfile.
If your project does not have one, add it. - In the
Application_Start(), subscribe to theBootstrapper_Initializedevent. - In the
Bootstrapper_Initializedhandler, subscribe to theISitemapGeneratorBeforeWriting. - Implement the
Before_Writingevent handler with the custom logic that will be executed when a sitemap is generated.
You get the collection of entries that are to be written to the sitemap file and add any additional URLs to the collection. - For the changes to take effect, build the solution and restart the application.
- Generate the sitemap.
Following is a code sample for the above procedure:
C#
using System;
using System.Linq;
using Telerik.Sitefinity.Abstractions;
using Telerik.Sitefinity.Services;
using Telerik.Sitefinity.SitemapGenerator.Abstractions.Events;
using Telerik.Sitefinity.SitemapGenerator.Data;
namespace SitefinityWebApp
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
Bootstrapper.Initialized += new EventHandler<Telerik.Sitefinity.Data.ExecutedEventArgs>(this.Bootstrapper_Initialized);
}
void Bootstrapper_Initialized(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs e)
{
if (e.CommandName == "Bootstrapped")
{
EventHub.Subscribe<ISitemapGeneratorBeforeWriting>(Before_Writing);
}
}
private void Before_Writing(ISitemapGeneratorBeforeWriting evt)
{
// gets the entries that are about to be written in the sitemap
var entries = evt.Entries.ToList();
// creates a new sitemap entry
SitemapEntry newSitemapEntry = new SitemapEntry();
//sets the location property of the new sitemap entry
newSitemapEntry.Location = "http://<site domain>/my-custom-entry";
newSitemapEntry.Priority = 1;
// adds the new sitemap entry to the collection of the entries
entries.Add(newSitemapEntry);
// sets the collection of entries to the modified collection
evt.Entries = entries;
}
}
}
Want to learn more?
Enhance your Sitefinity skills by enrolling in free training sessions. Become Sitefinity certified through Progress Education Community to strengthen your professional credentials.
Get started with Integration Hub | Sitefinity Cloud
This free lesson teaches administrators, marketers, and other business professionals how to use Sitefinity Integration Hub to create automated workflows between Sitefinity and other business systems.
Web Security for Sitefinity Administrators
This free lesson teaches administrators the basics about protecting your Sitefinity instance and your sites from external threats. Configure HTTPS, SSL, allow lists for trusted sites, and cookie security, among others.
Foundations of Sitefinity ASP.NET Core Development
The free on-demand video course teaches developers how to use Sitefinity ASP.NET Core and take advantage of its decoupled architecture and modern development model.