From abcab1b57d6bc3e6e44ff4d143f33bee8cc15a4d Mon Sep 17 00:00:00 2001 From: tdro Date: Tue, 6 Dec 2022 22:13:01 -0500 Subject: themes/default/layouts/_default/sitemap.xml: Add schema and transform Validate with schema. Switch to xml-data identifier attribute and adjust file name-spacing in configuration --- Makefile | 6 +- assets/css/default.css | 8 +- assets/schemas/sitemap-v0.9.xsd | 113 ++++++++++++++++++++ assets/schemas/sitemapindex-v0.9.xsd | 71 +++++++++++++ config.json | 14 ++- config.toml | 13 ++- config.yaml | 13 ++- themes/default/layouts/_default/home.xslt.rss.xsl | 114 +++++++++++++++++++++ .../default/layouts/_default/home.xslt.sitemap.xsl | 97 ++++++++++++++++++ themes/default/layouts/_default/home.xslt.xsl | 114 --------------------- themes/default/layouts/_default/sitemap.xml | 68 ++++++++---- themes/default/layouts/partials/base-footer.html | 3 +- themes/default/layouts/shortcodes/version.html | 2 +- 13 files changed, 491 insertions(+), 145 deletions(-) create mode 100644 assets/schemas/sitemap-v0.9.xsd create mode 100644 assets/schemas/sitemapindex-v0.9.xsd create mode 100644 themes/default/layouts/_default/home.xslt.rss.xsl create mode 100644 themes/default/layouts/_default/home.xslt.sitemap.xsl delete mode 100644 themes/default/layouts/_default/home.xslt.xsl diff --git a/Makefile b/Makefile index b952bf2..937cd02 100644 --- a/Makefile +++ b/Makefile @@ -47,7 +47,11 @@ test-xml: test-rss: xmllint --noout --relaxng assets/schemas/rss-v2.0.rng public/rss.xml -# xmllint --noout --schema assets/schemas/rss-v2.0.xsd public/rss.xml +# xmllint --noout --schema assets/schemas/rss-v2.0.xsd public/rss.xml + +test-sitemap: + xmllint --noout --schema assets/schemas/sitemap-v0.9.xsd public/sitemap.xml +# xmllint --noout --schema assets/schemas/sitemapindex-v0.9.xsd public/sitemap.xml test-jsonfeed: check-jsonschema --schemafile assets/schemas/jsonfeed-v1.1.json public/index.json diff --git a/assets/css/default.css b/assets/css/default.css index b7840e5..312a180 100644 --- a/assets/css/default.css +++ b/assets/css/default.css @@ -1908,14 +1908,18 @@ main micro-card:first-of-type reaction-tip img { padding-left: 2rem; } -[data="xml"] micro-thumbnail { +[xml-data] micro-thumbnail { display: block; } -[data="xml"] column-middle nav section { +[xml-data] column-middle nav section { flex-grow: 1; } +[xml-data="sitemap"] main section { + padding: 1rem; +} + /* ----- Responsive ----- */ @media screen and (max-width: 1220px) { diff --git a/assets/schemas/sitemap-v0.9.xsd b/assets/schemas/sitemap-v0.9.xsd new file mode 100644 index 0000000..e27680e --- /dev/null +++ b/assets/schemas/sitemap-v0.9.xsd @@ -0,0 +1,113 @@ + + + + + XML Schema for Sitemap files. + Last Modifed 2008-03-26 + + + + + + Container for a set of up to 50,000 document elements. + This is the root element of the XML file. + + + + + + + + + + + + + Container for the data needed to describe a document to crawl. + + + + + + + + + + + + + + REQUIRED: The location URI of a document. + The URI must conform to RFC 2396 (http://www.ietf.org/rfc/rfc2396.txt). + + + + + + + + + + + OPTIONAL: The date the document was last modified. The date must conform + to the W3C DATETIME format (http://www.w3.org/TR/NOTE-datetime). + Example: 2005-05-10 + Lastmod may also contain a timestamp. + Example: 2005-05-10T17:33:30+08:00 + + + + + + + + + + + + + + + OPTIONAL: Indicates how frequently the content at a particular URL is + likely to change. The value "always" should be used to describe + documents that change each time they are accessed. The value "never" + should be used to describe archived URLs. Please note that web + crawlers may not necessarily crawl pages marked "always" more often. + Consider this element as a friendly suggestion and not a command. + + + + + + + + + + + + + + + + OPTIONAL: The priority of a particular URL relative to other pages + on the same site. The value for this element is a number between + 0.0 and 1.0 where 0.0 identifies the lowest priority page(s). + The default priority of a page is 0.5. Priority is used to select + between pages on your site. Setting a priority of 1.0 for +100 4451 100 4451 0 0 15017 0 --:--:-- --:--:-- --:--:-- 15037 +all URLs + will not help you, as the relative priority of pages on your site + is what will be considered. + + + + + + + + diff --git a/assets/schemas/sitemapindex-v0.9.xsd b/assets/schemas/sitemapindex-v0.9.xsd new file mode 100644 index 0000000..c35d50a --- /dev/null +++ b/assets/schemas/sitemapindex-v0.9.xsd @@ -0,0 +1,71 @@ + + + + + XML Schema for Sitemap index files. + Last Modifed 2009-04-08 + + + + + + Container for a set of up to 50,000 sitemap URLs. + This is the root element of the XML file. + + + + + + + + + + + + + Container for the data needed to describe a sitemap. + + + + + + + + + + + + REQUIRED: The location URI of a sitemap. + The URI must conform to RFC 2396 (http://www.ietf.org/rfc/rfc2396.txt). + + + + + + + + + + + OPTIONAL: The date the document was last modified. The date must conform + to the W3C DATETIME format (http://www.w3.org/TR/NOTE-datetime). + Example: 2005-05-10 + Lastmod may also contain a timestamp. + Example: 2005-05-10T17:33:30+08:00 + + + + + + + + + + + + diff --git a/config.json b/config.json index 25762ab..f4fad5d 100644 --- a/config.json +++ b/config.json @@ -203,10 +203,14 @@ "baseName": "rss", "mediaType": "application/rss+xml" }, - "xslt": { + "xslt.rss": { "baseName": "rss", "mediaType": "application/xslt+xml" }, + "xslt.sitemap": { + "baseName": "sitemap", + "mediaType": "application/xslt+xml" + }, "authors": { "path": "authors", "baseName": "index", @@ -240,7 +244,8 @@ "home": [ "html", "rss", - "xslt", + "xslt.rss", + "xslt.sitemap", "json", "authors", "sources", @@ -347,5 +352,10 @@ "target": "assets/public" } ] + }, + "sitemap": { + "changefreq": "weekly", + "filename": "sitemap.xml", + "priority": 0.5 } } diff --git a/config.toml b/config.toml index e8e9778..ce885d1 100644 --- a/config.toml +++ b/config.toml @@ -146,10 +146,14 @@ enableRobotsTXT = true baseName = "rss" mediaType = "application/rss+xml" - [outputFormats.xslt] + [outputFormats."xslt.rss"] baseName = "rss" mediaType = "application/xslt+xml" + [outputFormats."xslt.sitemap"] + baseName = "sitemap" + mediaType = "application/xslt+xml" + [outputFormats.authors] path = "authors" baseName = "index" @@ -179,7 +183,7 @@ enableRobotsTXT = true mediaType = "application/manifest+json" [outputs] - home = ["html", "rss", "xslt", "json", "authors", "sources", "browserconfig", "history", "records", "webmanifest"] + home = ["html", "rss", "xslt.rss", "xslt.sitemap", "json", "authors", "sources", "browserconfig", "history", "records", "webmanifest"] section = ["html", "rss"] taxonomy = ["html", "rss"] term = ["html", "rss"] @@ -264,3 +268,8 @@ enableRobotsTXT = true [[module.mounts]] source = "public" target = "assets/public" + +[sitemap] + changefreq = "weekly" + filename = "sitemap.xml" + priority = 0.5 diff --git a/config.yaml b/config.yaml index 5dbe841..3177b5a 100644 --- a/config.yaml +++ b/config.yaml @@ -131,9 +131,12 @@ outputFormats: rss: baseName: rss mediaType: application/rss+xml - xslt: + xslt.rss: baseName: rss mediaType: application/xslt+xml + xslt.sitemap: + baseName: sitemap + mediaType: application/xslt+xml authors: path: authors baseName: index @@ -161,7 +164,8 @@ outputs: home: - html - rss - - xslt + - xslt.rss + - xslt.sitemap - json - authors - sources @@ -231,3 +235,8 @@ module: target: data/authors - source: public target: assets/public + +sitemap: + changefreq: weekly + filename: sitemap.xml + priority: 0.5 diff --git a/themes/default/layouts/_default/home.xslt.rss.xsl b/themes/default/layouts/_default/home.xslt.rss.xsl new file mode 100644 index 0000000..e0be815 --- /dev/null +++ b/themes/default/layouts/_default/home.xslt.rss.xsl @@ -0,0 +1,114 @@ +{{- printf `` | safeHTML }} + + + + + + {{ printf `<xsl:value-of select="/rss/channel/title"/> Web Feed` | safeHTML }} + + + {{- $default := resources.Get "css/default.css" -}} + {{- if .Site.Params.site.production -}} + {{ $css := slice $default | resources.Concat "css/bundle.css" | resources.Minify | fingerprint }} + + {{- else }} + + {{- end }} + + + + + +
+ + + + + + +
+ + + + + + + + + + +
+
+ +

+ + + + +

+ Published: +
+
+
+
+
+
+ + + + +
+
diff --git a/themes/default/layouts/_default/home.xslt.sitemap.xsl b/themes/default/layouts/_default/home.xslt.sitemap.xsl new file mode 100644 index 0000000..167b773 --- /dev/null +++ b/themes/default/layouts/_default/home.xslt.sitemap.xsl @@ -0,0 +1,97 @@ +{{- printf `` | safeHTML }} + + + + + + {{ $.Site.Title }} Site Map + + + {{- $default := resources.Get "css/default.css" -}} + {{- if .Site.Params.site.production -}} + {{ $css := slice $default | resources.Concat "css/bundle.css" | resources.Minify | fingerprint }} + + {{- else }} + + {{- end }} + + + + + +
+ + +
+ + + + + + + + + + + + + +
+ + + Uniform Resource Locators (URLs) + +
+ + + + + + Last Modified: + Frequency: + Priority: + + + +
+
+
+
+ + + + +
+
diff --git a/themes/default/layouts/_default/home.xslt.xsl b/themes/default/layouts/_default/home.xslt.xsl deleted file mode 100644 index c242f70..0000000 --- a/themes/default/layouts/_default/home.xslt.xsl +++ /dev/null @@ -1,114 +0,0 @@ -{{- printf `` | safeHTML }} - - - - - - {{ printf `<xsl:value-of select="/rss/channel/title"/> Web Feed` | safeHTML }} - - - {{- $default := resources.Get "css/default.css" -}} - {{- if .Site.Params.site.production -}} - {{ $css := slice $default | resources.Concat "css/bundle.css" | resources.Minify | fingerprint }} - - {{- else }} - - {{- end }} - - - - - -
- - - - - - -
- - - - - - - - - - -
-
- -

- - - - -

- Published: -
-
-
-
-
-
- - - - -
-
diff --git a/themes/default/layouts/_default/sitemap.xml b/themes/default/layouts/_default/sitemap.xml index 63f5119..b751f65 100644 --- a/themes/default/layouts/_default/sitemap.xml +++ b/themes/default/layouts/_default/sitemap.xml @@ -1,22 +1,50 @@ -{{ printf "" | safeHTML }} - - {{ range .Data.Pages }} - - {{ .Permalink }}{{ if not .Lastmod.IsZero }} - {{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}{{ end }}{{ with .Sitemap.ChangeFreq }} - {{ . }}{{ end }}{{ if ge .Sitemap.Priority 0.0 }} - {{ .Sitemap.Priority }}{{ end }}{{ if .IsTranslated }}{{ range .Translations }} - {{ end }} - {{ end }} - +{{- printf `` | safeHTML }} +{{ printf `` | safeHTML }} + +{{- $changefreq := "weekly" -}} +{{- $priority := 0.5 -}} +{{- $lastmod := now.Format "2006-01-02T15:04:05-07:00" }} + + + {{- $notExpired := where .Data.Pages "Params.expirydate" "eq" nil -}} + {{- $notUnlisted := where .Data.Pages "Params.unlisted" "eq" nil -}} + {{- $filteredPages := $notExpired | intersect $notUnlisted -}} + {{- range $filteredPages }} + + {{- with .Sitemap.ChangeFreq -}} + {{- $changefreq = . -}} + {{- end -}} + + {{- if ge .Sitemap.Priority 0.0 -}} + {{- $priority = .Sitemap.Priority -}} + {{- end -}} + + {{- if not .Lastmod.IsZero -}} + {{- $lastmod = safeHTML (.Lastmod.Format "2006-01-02T15:04:05-07:00") -}} + {{- end }} + + + {{ .Permalink }} + {{ $lastmod }} + {{ $changefreq }} + {{ $priority }} + {{- if .IsTranslated -}} + {{ range .Translations }} + + {{- end -}} + + {{ end }} + {{ end }} diff --git a/themes/default/layouts/partials/base-footer.html b/themes/default/layouts/partials/base-footer.html index bda969c..f24b8d6 100644 --- a/themes/default/layouts/partials/base-footer.html +++ b/themes/default/layouts/partials/base-footer.html @@ -8,5 +8,6 @@ {{ $author.title }} {{- end -}} {{- end }} - | Copyright © {{ now.Format "2006"}} + · Copyright © {{ now.Format "2006"}} + · Site Map diff --git a/themes/default/layouts/shortcodes/version.html b/themes/default/layouts/shortcodes/version.html index 9c993b3..48aed2c 100644 --- a/themes/default/layouts/shortcodes/version.html +++ b/themes/default/layouts/shortcodes/version.html @@ -1,4 +1,4 @@ -{{- $version := "0.11.7" -}} +{{- $version := "0.11.8" -}} {{- $number := default false (.Get "number" | default (.Get 0)) -}} {{- $clone := default false (.Get "clone" | default (.Get 1)) -}} -- cgit v1.2.3