package plugins type sitemapPlugin struct{ plugin } func init() { register("jekyll-sitemap", &sitemapPlugin{}) } func (p *sitemapPlugin) PostReadSite(s Site) error { s.AddHTMLPage("/sitemap.xml", sitemapTemplateSource, nil) s.AddHTMLPage("/robots.txt", `Sitemap: {{ "sitemap.xml" | absolute_url }}`, nil) return nil } // Taken verbatim from https://github.com/jekyll/jekyll-sitemap-plugin/ const sitemapTemplateSource = ` {% if page.xsl %} {% endif %} {% assign collections = site.collections | where_exp:'collection','collection.output != false' %} {% for collection in collections %} {% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %} {% for doc in docs %} {{ doc.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if doc.last_modified_at or doc.date %} {{ doc.last_modified_at | default: doc.date | date_to_xmlschema }} {% endif %} {% endfor %} {% endfor %} {% assign pages = site.html_pages | where_exp:'doc','doc.sitemap != false' | where_exp:'doc','doc.url != "/404.html"' %} {% for page in pages %} {{ page.url | replace:'/index.html','/' | absolute_url | xml_escape }} {% if page.last_modified_at %} {{ page.last_modified_at | date_to_xmlschema }} {% endif %} {% endfor %} {% assign static_files = page.static_files | where_exp:'page','page.sitemap != false' | where_exp:'page','page.name != "404.html"' %} {% for file in static_files %} {{ file.path | replace:'/index.html','/' | absolute_url | xml_escape }} {{ file.modified_time | date_to_xmlschema }} {% endfor %} `