]> danix's work - danix.xyz-2.git/commitdiff
feat: implement Related Articles sidebar widget
authorDanilo M. <redacted>
Fri, 17 Apr 2026 14:02:40 +0000 (16:02 +0200)
committerDanilo M. <redacted>
Fri, 17 Apr 2026 14:02:40 +0000 (16:02 +0200)
Replaces stub implementation with full related content functionality:
- Uses Hugo's .Site.RegularPages.Related API for smart tagging
- Caps at 5 related articles to keep sidebar compact
- Shows 2-line compact card per entry (title + date, excerpt snippet)
- Left border colored by article type (var(--type-<type>))
- Includes empty state message when no related articles found
- Multilingual support via existing i18n keys
- Theme-aware styling via CSS custom properties

The widget shows:
- Line 1: Title (linked) + · Jan 2006 date inline
- Line 2: First ~10 words of excerpt, small font, muted

Previously was a stub with empty placeholder comment.

Co-Authored-By: Claude Haiku 4.5 <redacted>
themes/danix-xyz-hacker/layouts/partials/sidebar.html

index f552df97f6fd1b69a9cf73ef1fb930f915776069..574eb85cd497110ed2de36d801b0039ede157327 100644 (file)
@@ -9,14 +9,35 @@
 
   <!-- Related posts widget (optional) -->
   {{ if .Site.Params.relatedPosts }}
-  {{ $related := .GetTerms "tags" }}
-  {{ if $related }}
-  <div class="p-4 border border-border/30 rounded">
+  {{ $related := first 5 (.Site.RegularPages.Related .) }}
+  <div class="p-4 border border-border/30 rounded mb-6">
     <h3 class="text-lg font-semibold text-accent mb-3">{{ i18n "relatedPosts" }}</h3>
-    <div class="space-y-2">
-      <!-- Related articles can be implemented here -->
-    </div>
+    {{ if $related }}
+    <ul class="space-y-3">
+      {{ range $related }}
+      {{ $articleType := .Params.type | default "life" }}
+      {{ $excerpt := .Description | default .Summary }}
+      <li
+        class="pl-3 border-l-2"
+        style="border-color: var(--type-{{ $articleType }});"
+      >
+        <a href="{{ .RelPermalink }}" class="text-sm hover:text-accent transition-colors leading-snug block">
+          {{ .Title }}
+          <time class="text-text-dim/60 ml-1" datetime="{{ .PublishDate.Format "2006-01-02T15:04:05Z07:00" }}">
+            · {{ .PublishDate.Format "Jan 2006" }}
+          </time>
+        </a>
+        {{ if $excerpt }}
+        <p class="text-xs text-text-dim/70 leading-snug mt-0.5 line-clamp-1">
+          {{ $excerpt | plainify | truncate 60 }}
+        </p>
+        {{ end }}
+      </li>
+      {{ end }}
+    </ul>
+    {{ else }}
+    <p class="text-sm text-text-dim">{{ i18n "noRelated" }}</p>
+    {{ end }}
   </div>
   {{ end }}
-  {{ end }}
 </aside>