diff --git a/hugo.toml b/hugo.toml index 76c6e1a..e41b1a4 100644 --- a/hugo.toml +++ b/hugo.toml @@ -2,18 +2,25 @@ baseURL = "https://sbomify.com" title = "Sbomify" languageCode = "en-us" -# Pagination (matches jekyll-paginate-v2: 12 per page) -[pagination] - pagerSize = 12 - path = "page" - # Enable .GitInfo (replaces _plugins/git_dates.rb) +# +# Keep this and ignoreFiles ABOVE the first table header. TOML assigns every +# bare key to the table that precedes it, so while these sat under +# [pagination] they were parsed as pagination.enableGitInfo / +# pagination.ignoreFiles -- silently dropped by Hugo, with no root-level +# enableGitInfo in `hugo config` at all. The visible symptom was .GitInfo nil +# and .Lastmod zero on every page, which put "0001-01-01T00:00:00Z" into the +# dateModified of 28 FAQ pages. enableGitInfo = true - # Ignore leftover Jekyll files ignoreFiles = ["_config\\.yml$", "_config_development\\.yml$", "Gemfile", "Gemfile\\.lock", "convert_to_webp\\.rb$"] +# Pagination (matches jekyll-paginate-v2: 12 per page) +[pagination] + pagerSize = 12 + path = "page" + # Match Jekyll permalink exactly: /:year/:month/:day/:slug/ [permalinks] [permalinks.page] diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 2782098..cfa3a6a 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -82,7 +82,11 @@ {{- range site.Params.social.profiles -}} {{- if eq .platform "LinkedIn" -}}{{ $linkedinUrl = .url }}{{- end -}} {{- end -}} - {{ if eq .Type "posts" }} + {{/* .Kind "page" excludes the /blog/ listing and its paginated pages, which + share Type "posts" but have no date of their own — they were emitting + article:published_time "0001-01-01T00:00:00Z". They get their own + CollectionPage schema further down. */}} + {{ if and (eq .Type "posts") (eq .Kind "page") }} @@ -210,7 +214,9 @@ {{ end }} - {{ if eq .Type "posts" }} + {{/* .Kind "page" only — the /blog/ listing is not a BlogPosting, and was + emitting one with datePublished "0001-01-01T00:00:00Z". */}} + {{ if and (eq .Type "posts") (eq .Kind "page") }} + + {{/* The listing's breadcrumb used to come from the blog-post block, which is + now restricted to .Kind "page". Emitted here so /blog/ and its paginated + pages keep their trail without also claiming to be a BlogPosting. */}} + + {{ end }} {{ if eq .RelPermalink "/case-studies/" }} @@ -574,8 +607,10 @@ "name": {{ .Title | jsonify | safeJS }}, "description": {{ (.Params.description | default site.Params.description) | jsonify | safeJS }}, "url": "{{ .Permalink }}", - "dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }}", - "isPartOf": { + {{/* Guarded: this is the field that shipped "0001-01-01T00:00:00Z" on 28 + FAQ pages while enableGitInfo was silently inert. */}} + {{ if not .Lastmod.IsZero }}"dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }}", + {{ end }}"isPartOf": { "@type": "WebSite", "name": "{{ site.Title }}", "url": "{{ site.BaseURL }}"