Skip to content

Specifying your own logic

Radek Kozłowski edited this page Sep 10, 2016 · 4 revisions

You can override all methods of class DynamicSitemapGenerator.

Main method which processes all items is:

/// <summary>
/// Processes all items in site under root path
/// </summary>
/// <param name="items">List of Items</param>
/// <param name="sitemapSiteConfiguration">Current sitemap configuration</param>
/// <param name="options">Url Options</param>
/// <param name="xml">Xml Text Writer object</param>
public void ProcessItems(
  List<Item> items, 
  SitemapSiteConfiguration sitemapSiteConfiguration, 
  UrlOptions options, 
  XmlTextWriter xml);

For example:

new public void ProcessItems(List<Item> items, SitemapSiteConfiguration sitemapSiteConfiguration, UrlOptions options, XmlTextWriter xml)
{
    // Run base method to prepare sitemap elements for configured items
    base.ProcessItems(items, sitemapSiteConfiguration, options, xml);
 
    // Get your special items
    List<Item> myItems = GetSpecialItems();
 
    foreach (var item in myItems)
    {
        if (item.Versions.Count > 0)
        {
            // Get url for your special item
            String url = GetUrlForSpecialItem(item);
 
            // Replace host to fit configuration
            if (!String.IsNullOrEmpty(sitemapSiteConfiguration.ServerHost))
            {
                url = ReplaceHost(url, sitemapSiteConfiguration.ServerHost);
            }
 
            // Generate url element in sitemap
            GenerateUrlElement(url, item, sitemapSiteConfiguration, xml);
            
        }
    }
}

Clone this wiki locally