diff options
| author | Danilo M. <danix@danix.xyz> | 2026-04-15 22:05:38 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-04-15 22:05:38 +0200 |
| commit | d32ef68eabe6fb8d044d936d2e59909cd613920d (patch) | |
| tree | c7f7794fd2d97821ba944bc9856da73e75a51f70 /themes | |
| parent | 134d00e5bd0f15113e256c8446931d830985fbf4 (diff) | |
| download | danixxyz-d32ef68eabe6fb8d044d936d2e59909cd613920d.tar.gz danixxyz-d32ef68eabe6fb8d044d936d2e59909cd613920d.zip | |
Implement taxonomy system for tags and categories
- Enable tags and categories taxonomies in hugo.toml
- Create taxonomy/list.html for archive pages (/tags, /categories)
- Create taxonomy/term.html for individual term pages (/tags/example)
- Add quote shortcode for quote-type articles
- Both templates reuse article-list-item partial for consistent styling
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Diffstat (limited to 'themes')
| -rw-r--r-- | themes/danix-xyz-hacker/layouts/shortcodes/quote.html | 15 | ||||
| -rw-r--r-- | themes/danix-xyz-hacker/layouts/taxonomy/list.html | 31 | ||||
| -rw-r--r-- | themes/danix-xyz-hacker/layouts/taxonomy/term.html | 38 |
3 files changed, 84 insertions, 0 deletions
diff --git a/themes/danix-xyz-hacker/layouts/shortcodes/quote.html b/themes/danix-xyz-hacker/layouts/shortcodes/quote.html new file mode 100644 index 0000000..1ed5c3c --- /dev/null +++ b/themes/danix-xyz-hacker/layouts/shortcodes/quote.html @@ -0,0 +1,15 @@ +{{- $source := .Get "source" -}} +{{- $src := .Get "src" -}} + +<blockquote class="my-8 pl-6 border-l-4 border-accent/50 italic text-text-dim"> + <p class="text-lg">{{ .Inner }}</p> + {{- if $source -}} + <footer class="mt-4 text-sm not-italic text-text-dim"> + {{- if $src -}} + — <a href="{{ $src }}" class="text-accent hover:underline">{{ $source }}</a> + {{- else -}} + — {{ $source }} + {{- end -}} + </footer> + {{- end -}} +</blockquote> diff --git a/themes/danix-xyz-hacker/layouts/taxonomy/list.html b/themes/danix-xyz-hacker/layouts/taxonomy/list.html new file mode 100644 index 0000000..fd4b5d9 --- /dev/null +++ b/themes/danix-xyz-hacker/layouts/taxonomy/list.html @@ -0,0 +1,31 @@ +{{ define "main" }} +<div class="mx-auto px-4 py-12 max-w-4xl"> + <!-- Page title with taxonomy name --> + <h1 class="text-4xl md:text-5xl font-bold text-accent mb-12"> + {{ i18n .Data.Plural }} + </h1> + + <!-- Articles list --> + <div class="space-y-2 max-w-2xl"> + {{ $pinned := where .Pages "Params.pinned" true }} + {{ $unpinned := where .Pages "Params.pinned" false }} + + <!-- Pinned posts first --> + {{ range (sort $pinned "Date" "desc") }} + {{ partial "article-list-item.html" . }} + {{ end }} + + <!-- Regular posts --> + {{ range (sort $unpinned "Date" "desc") }} + {{ partial "article-list-item.html" . }} + {{ end }} + + <!-- Empty state --> + {{ if eq (len .Pages) 0 }} + <div class="py-12 text-center text-text-dim"> + {{ i18n "noRelated" }} + </div> + {{ end }} + </div> +</div> +{{ end }} diff --git a/themes/danix-xyz-hacker/layouts/taxonomy/term.html b/themes/danix-xyz-hacker/layouts/taxonomy/term.html new file mode 100644 index 0000000..5353715 --- /dev/null +++ b/themes/danix-xyz-hacker/layouts/taxonomy/term.html @@ -0,0 +1,38 @@ +{{ define "main" }} +<div class="mx-auto px-4 py-12 max-w-4xl"> + <!-- Page title with taxonomy type --> + <h1 class="text-4xl md:text-5xl font-bold text-accent mb-2"> + {{ i18n .Data.Singular }} + </h1> + + <!-- Current term heading --> + <p class="text-lg text-text-dim mb-12"> + <span class="inline-flex items-center px-3 py-1 rounded text-sm font-medium border border-accent/30 text-accent"> + {{ .Title }} + </span> + </p> + + <!-- Articles list --> + <div class="space-y-2 max-w-2xl"> + {{ $pinned := where .Pages "Params.pinned" true }} + {{ $unpinned := where .Pages "Params.pinned" false }} + + <!-- Pinned posts first --> + {{ range (sort $pinned "Date" "desc") }} + {{ partial "article-list-item.html" . }} + {{ end }} + + <!-- Regular posts --> + {{ range (sort $unpinned "Date" "desc") }} + {{ partial "article-list-item.html" . }} + {{ end }} + + <!-- Empty state --> + {{ if eq (len .Pages) 0 }} + <div class="py-12 text-center text-text-dim"> + {{ i18n "noRelated" }} + </div> + {{ end }} + </div> +</div> +{{ end }} |
