package plugins import ( "github.com/osteele/gojekyll/pages" ) type sitemapPlugin struct{ plugin } func init() { register("jekyll-sitemap", &sitemapPlugin{}) } // func (p *sitemapPlugin) ConfigureTemplateEngine(e *liquid.Engine) error { // // e.RegisterTag("feed_meta", p.feedMetaTag) // return nil // } func (p *sitemapPlugin) PostRead(s Site) error { s.AddDocument(newTemplateDoc(s, "sitemap.xml", sitemapTemplateSource), true) s.AddDocument(newTemplateDoc(s, "robots.txt", `Sitemap: {{ "sitemap.xml" | absolute_url }}`), true) return nil } func newTemplateDoc(s Site, path, src string) pages.Document { tpl, err := s.TemplateEngine().ParseTemplate([]byte(src)) if err != nil { panic(err) } return &templateDoc{s, path, tpl} } // 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 %} `