From e5c4b9ae3e0db6e67b227423b1c782a66af6c1ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stig-=C3=98rjan=20Smelror?= Date: Mon, 19 Feb 2024 19:47:23 +0100 Subject: [PATCH] _sitemap: Simplify sitemap genration. --- qsgen2 | 66 ++++++++++++++++++++++++++-------------------------------- 1 file changed, 29 insertions(+), 37 deletions(-) diff --git a/qsgen2 b/qsgen2 index 868a0fc..ae1eadc 100755 --- a/qsgen2 +++ b/qsgen2 @@ -942,16 +942,14 @@ function _sitemap() { # Find all HTML files and store them in an array # local -a html_files=("${(@f)$(find "${www_root}" -type f -name "*.html")}") builtin cd ${config[site_root]} - local -a html_files=(**/[a-z]*.html(.)) - local -a blog_files=(${html_files[@]:#*blog*}) + local -a blog_files=() local -a page_files=() for file in "${html_files[@]}"; do - [[ $file != *blog* ]] && page_files+=("$file") - done - - local -a xml_files=([a-z]*.xml(.)) - for file in "${xml_files[@]}"; do - [[ $file != *sitemap.* ]] && xml_files+=("$file") + if [[ $file == *blog* ]]; then + blog_files+=("$file") + else + page_files+=("$file") + fi done # Start of the XML file for BLOGS @@ -1012,38 +1010,32 @@ function _sitemap() { echo '' >> "${sitemap_page}" _msg std " - ${p_file}" - # Start of the XML file - echo '' > ${sitemap_file} - echo "" >> ${sitemap_file} - echo "" >> ${sitemap_file} - echo '> ${sitemap_file} - echo ' xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"' >> ${sitemap_file} - echo ' xmlns:xhtml="http://www.w3.org/1999/xhtml"' >> ${sitemap_file} - echo ' xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"' >> ${sitemap_file} - echo '>' >> ${sitemap_file} - - # Add each URL to the sitemap - for file in "${xml_files[@]}" - do - # Remove www_root from the path and prepend site_url - local url="${site_url}/${file#$www_root}" - local lastmod=$(stat -c %y "${file}" 2>/dev/null | cut -d' ' -f1,2 | sed 's/ /T/' | sed 's/\..*$//') - - echo " " >> ${sitemap_file} - echo " ${url}" >> ${sitemap_file} - echo " " >> "${sitemap_file}" - echo " " >> ${sitemap_file} - echo " " >> ${sitemap_file} - echo " " >> ${sitemap_file} - done - - # End of the XML file - echo '' >> "${sitemap_file}" - _msg std " - ${sm_file}" - if (${debug}); then _msg debug "${0:t}_msg_2" " ${sitemap_file}"; fi fi + + # Start of the XML file for the main sitemap + echo '' > "${sitemap_file}" + echo "" >> "${sitemap_file}" + + # Add sitemap-blogs.xml to the sitemap + echo " " >> "${sitemap_file}" + echo " ${site_url}/${b_file}" >> "${sitemap_file}" + local lastmod_b=$(stat -c %y "${b_file}" 2>/dev/null | cut -d' ' -f1,2 | sed 's/ /T/' | sed 's/\..*$//') + echo " ${lastmod_b}" >> "${sitemap_file}" + echo " " >> "${sitemap_file}" + + # Add sitemap-pages.xml to the sitemap + echo " " >> "${sitemap_file}" + echo " ${site_url}/${p_file}" >> "${sitemap_file}" + local lastmod_p=$(stat -c %y "${p_file}" 2>/dev/null | cut -d' ' -f1,2 | sed 's/ /T/' | sed 's/\..*$//') + echo " ${lastmod_p}" >> "${sitemap_file}" + echo " " >> "${sitemap_file}" + + # End of the XML file + echo "" >> "${sitemap_file}" + _msg std " - ${sm_file}" + builtin cd ${config[project_root]} }