From 62aa99f85bc98ca97ca4f798dfc8b0d507c0fb4b Mon Sep 17 00:00:00 2001
From: Kamisama <166204452+NITHINSPACETIME@users.noreply.github.com>
Date: Sun, 18 Jan 2026 04:54:49 +0000
Subject: [PATCH] feat: add dynamic identifiers to body and article classes per page (#887)
---
layouts/page/single.html | 10 ++++++++--
layouts/baseof.html | 17 +++++++++++++++--
layouts/single.html | 11 +++++++++--
3 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/layouts/baseof.html b/layouts/baseof.html
index 1c2968f..ba1d1a6 100644
--- a/layouts/baseof.html
+++ b/layouts/baseof.html
@@ -56,9 +56,22 @@
{{ block "head" . }}{{ partials.Include "head-additions.html" . }}{{ end }}
</head>
- {{- $environment := hugo.Environment | compare.Default "production" -}}
- <body class="ma0 {{ $.Param "body_classes" | compare.Default "avenir bg-near-white"}} {{ $environment }}">
+ {{- $environment := hugo.Environment | default "production" -}}
+ {{/* Generate dynamic classes for the body tag */}}
+ {{- $body_classes := slice "ma0" ($.Param "body_classes" | default "avenir bg-near-white") $environment -}}
+ {{- $body_classes = $body_classes | append (printf "is-%s" .Kind) -}}
+
+ {{- if .IsPage -}}
+ {{- $body_classes = $body_classes | append "is-page" -}}
+ {{- with .File -}}
+ {{- $body_classes = $body_classes | append (printf "page-%s" .ContentBaseName) -}}
+ {{- end -}}
+ {{- end -}}
+
+ {{- if .IsSection -}}{{- $body_classes = $body_classes | append "is-section" -}}{{- end -}}
+
+ <body class="{{ delimit $body_classes " " }}">
{{ block "header" . }}{{ partials.Include "site-header.html" .}}{{ end }}
<main class="pb7" role="main">
{{ block "main" . }}{{ end }}
diff --git a/layouts/page/single.html b/layouts/page/single.html
index 86660c9..27bd09f 100644
--- a/layouts/page/single.html
+++ b/layouts/page/single.html
@@ -1,7 +1,13 @@
{{ define "header" }}{{ partials.Include "page-header.html" . }}{{ end }}
{{ define "main" }}
<div class="flex-l mt2 mw8 center">
- <article class="center cf pv5 ph3 ph4-ns mw7">
+ {{/* Calculate a unique class for this page */}}
+ {{- $post_class := "" -}}
+ {{- with .File -}}
+ {{- $post_class = printf "page-%s" .ContentBaseName -}}
+ {{- end -}}
+
+ <article class="{{ $post_class }} center cf pv5 ph3 ph4-ns mw7">
<header>
<h1 class="f1">
{{ .Title }}
@@ -12,4 +18,4 @@
</div>
</article>
</div>
-{{ end }}
+{{ end }}
\ No newline at end of file
diff --git a/layouts/single.html b/layouts/single.html
index e8d029c..83cdd7c 100644
--- a/layouts/single.html
+++ b/layouts/single.html
@@ -8,7 +8,14 @@
{{- $needs_aside := or .Params.toc $related_content -}}
{{ $page := .}}
{{ $section := .Site.GetPage "section" .Section }}
- <article class="flex-l {{ if $needs_aside }}mw8{{ else }}mw7{{ end }} center ph3 flex-wrap justify-between">
+
+ {{/* Calculate a unique class for this post */}}
+ {{- $post_class := "" -}}
+ {{- with .File -}}
+ {{- $post_class = printf "page-%s" .ContentBaseName -}}
+ {{- end -}}
+
+ <article class="{{ $post_class }} flex-l {{ if $needs_aside }}mw8{{ else }}mw7{{ end }} center ph3 flex-wrap justify-between">
<header class="mt4 w-100">
<aside class="instapaper_ignoref b helvetica tracked ttu">
{{/*
@@ -80,4 +87,4 @@
{{- end -}}
</article>
-{{ end }}
+{{ end }}
\ No newline at end of file
--
Gitblit v1.10.0