我想我有它的工作。我已经在我的机器上运行了这个,如果你想要一份副本,请联系。我通常不使用 Nunjucks,所以请原谅任何愚蠢的错误。我对 sitemap.njk 所做的第一个 mod 是隐藏 collections.all:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{%- for page in collections.all %}
{%- if not page.data.hidden %}
{%- if page.url !== "/category/all/" %}
<url>
<loc>{{ site.url }}{{ page.url | url }}</loc>
<lastmod>{{ page.date | htmlDateDisplay }}</lastmod>
</url>
{% endif %}
{%- endif %}
{%- endfor %}
有点hacky但有效。接下来,我需要一种方法来获取博客类别页面。我查看了tags.njk。根据我在那里看到的,我为 .eleventy.js 命名类别编写了一个过滤器。我不认为这是一个伟大的名字:
eleventyConfig.addFilter("categories", function(collections) {
let categories = Object.keys(collections).filter(c => c !== 'all');
return categories;
});
回到站点地图,然后我这样做了:
{%- set cats = collections | categories %}
{%- for cat in cats %}
{% set newestDate = collections[cat] | getLatestDate %}
<url>
<loc>{{ site.url }}/category/{{ cat }}/</loc>
<lastmod>{{ newestDate | htmlDateDisplay }}</lastmod>
</url>
{%- endfor %}
</urlset>
注意getLatestDate
过滤器,它是这样定义的:
eleventyConfig.addFilter("getLatestDate", function(collection) {
console.log('running getLatestDate');
return collection[0].date;
});
它似乎运作良好。这是我的输出:
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://skeleventy.netlify.app/blog/post-1/</loc>
<lastmod>2020-8-26</lastmod>
</url>
<url>
<loc>https://skeleventy.netlify.app/blog/post-2/</loc>
<lastmod>2020-8-26</lastmod>
</url>
<url>
<loc>https://skeleventy.netlify.app/blog/post-3/</loc>
<lastmod>2020-8-26</lastmod>
</url>
<url>
<loc>https://skeleventy.netlify.app/about/</loc>
<lastmod>2020-8-26</lastmod>
</url>
<url>
<loc>https://skeleventy.netlify.app/blog/</loc>
<lastmod>2020-8-26</lastmod>
</url>
<url>
<loc>https://skeleventy.netlify.app/contact/</loc>
<lastmod>2020-8-26</lastmod>
</url>
<url>
<loc>https://skeleventy.netlify.app/</loc>
<lastmod>2020-8-26</lastmod>
</url>
<url>
<loc>https://skeleventy.netlify.app/category/blog/</loc>
<lastmod>2020-8-26</lastmod>
</url>
<url>
<loc>https://skeleventy.netlify.app/category/business/</loc>
<lastmod>2020-8-26</lastmod>
</url>
<url>
<loc>https://skeleventy.netlify.app/category/digital/</loc>
<lastmod>2020-8-26</lastmod>
</url>
<url>
<loc>https://skeleventy.netlify.app/category/health/</loc>
<lastmod>2020-8-26</lastmod>
</url>
</urlset>
如果您想要完整的副本,请与我联系。