Skip to content

Latest commit

 

History

History
111 lines (92 loc) · 3.14 KB

README.markdown

File metadata and controls

111 lines (92 loc) · 3.14 KB

Sitemaps

Smart sitemap generation for .NET web apps

Introduction

PM> Install-Package Sitemaps

Features

  • Supports static and dynamic sitemap tagging
  • Provides browser and client caching mechanisms
  • Automatically adheres to the Sitemaps protocol
  • Understands ASP.NET MVC, so it obeys areas and action names, resolves method constraints, etc.

Usage

To configure the service, use the following options in your bootstrapper or Global.cs file, where you would normally register routes:

// Register "/sitemap" default route
SitemapService.Register();

// Register with a custom route URL
SitemapService.Register("unicorns");

// Change the default page size (the default is 125)
SitemapService.PageSize = 150;

Once configured, you can decorate your action methods with the Sitemap attribute. If you specify a Sitemap on a controller rather than an action method, every controller action method is selected for the sitemap.

// Specify a default frequency and priority
[Sitemap]
public ActionResult Team()
{
    return View();
}
    
// Specify a custom frequency
[Sitemap(Frequency = SitemapFrequency.Yearly)]
public ActionResult Privacy()
{
    return View();
}   

// Specify a custom frequency and priority
[Sitemap(Frequency = SitemapFrequency.Hourly, Priority = 1.0]
public ActionResult Blog()
{
    return View();
}

The controller action decorations above would produce the following XML sitemap:

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>http://localhost:9090/Team</loc>
        <lastmod>2011-05-20T04:33:19</lastmod>
        <changefreq>daily</changefreq>
        <priority>0.5</priority>
    </url>
    <url>
        <loc>http://localhost:9090/Privacy</loc>
        <lastmod>2011-05-20T04:33:19</lastmod>
        <changefreq>monthly</changefreq>
        <priority>0.5</priority>
    </url>
    <url>
        <loc>http://localhost:9090/Blog</loc>
        <lastmod>2011-05-20T04:33:19</lastmod>
        <changefreq>hourly</changefreq>
        <priority>1.0</priority>
    </url>
</urlset>

If your sitemap contains more URLs than the SitemapService.PageSize, it is automatically broken down into a paginated set of sitemaps per the protocol:

<?xml version="1.0" encoding="utf-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <sitemap>
        <loc>http://localhost:9090/sitemap/?page=1</loc>
        <lastmod>2011-05-19T22:57:42</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://localhost:9090/sitemap/?page=2</loc>
        <lastmod>2011-05-19T22:57:42</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://localhost:9090/sitemap/?page=3</loc>
        <lastmod>2011-05-19T22:57:42</lastmod>
    </sitemap>
</sitemapindex>

To add your own sitemap URLs at runtime, resolve ISitemapService or use SitemapService and call the AddNode method, passing in a SitemapNode instance:

var service = ServiceLocator.Current.GetInstance<ISitemapService>();
service.AddNode(new SitemapNode("http://unicorns.com") { Frequency = Frequency.Always, Priority = 1.0 });