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