--[[
Sitemap generator, based on dmbaturin's atom generator.
Requires a "site_url" value as seen below:
[custom_options]
site_url = "https://domain.tld"
Sample widget configuration:
[widgets.sitemap]
widget = "sitemap"
sitemap_file = "sitemap.xml"
]]
Plugin.require_version("2.2.0")
config["site_url"] = soupault_config["custom_options"]["site_url"]
local c = 1
local count = size(site_index)
local file = config["sitemap_file"]
local all_pages = {}
while (c <= count) do
local p = site_index[c]
all_pages[c] = p
c = c + 1
end
config["all_pages"] = all_pages
-- From: https://developers.google.com/search/docs/advanced/sitemaps/build-sitemap
local sitemap_template = [[
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{%- for p in all_pages -%}
<url>
<loc>{{ site_url }}{{ p.url }}</loc>
<lastmod>{%- if p.date -%}{{ p.date }}{%- else -%}{{ p.git_timestamp }}{%- endif -%}</lastmod>
</url>
{%- endfor -%}
</urlset>
]]
local sitemap = String.render_template(sitemap_template, config)
Sys.write_file(Sys.join_path(soupault_config["settings"]["build_dir"], file), String.trim(sitemap))