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:

  1. Open your project in Visual Studio
  2. Open the Global.asax file.
    If your project does not have one, add it.
  3. In the Application_Start(), subscribe to the Bootstrapper_Initialized event.
  4. In the Bootstrapper_Initialized handler, subscribe to the ISitemapGeneratorBeforeWriting.
  5. Implement the Before_Writing event 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.
  6. For the changes to take effect, build the solution and restart the application.
  7. 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.
New to Sitefinity?