Files
hugo-theme-chirpy/layouts/taxonomy/category.terms.html
2025-05-03 13:12:55 +08:00

107 lines
4.5 KiB
HTML

{{ define "main" }}
<article class="px-1">
<h1 class="dynamic-title">
{{ i18n "tabs.categories" }}
</h1>
<div class="content">
{{ $allPages := where .Site.RegularPages "Type" "post" }}
<!-- get all parent categories -->
{{ $parentCategories := slice }}
{{ range $allPages }}
{{ if gt (len .Params.categories) 0 }}
{{ $parentCategories = $parentCategories | append (index .Params.categories 0) }}
{{ end }}
{{ end }}
{{ $parentCategories = $parentCategories | uniq | sort }}
<!-- create card for each parent category -->
{{ range $index, $category := $parentCategories }}
{{ $parentName := . }}
{{ $subcategories := slice }}
{{ $parentPages := slice }}
<!-- get all pages and subcategories related to the parent category -->
{{ range $allPages }}
{{ if gt (len .Params.categories) 0 }}
{{ if eq (index .Params.categories 0) $parentName }}
{{ $parentPages = $parentPages | append . }}
{{ if gt (len .Params.categories) 1 }}
{{ $subcategories = $subcategories | append (index .Params.categories 1) }}
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ $subcategories = $subcategories | uniq | sort }}
<div class="card categories mb-3">
<div id="h_{{ $index }}" class="card-header d-flex justify-content-between hide-border-bottom">
<span class="ms-2">
<i class="far fa-folder{{ if gt (len $subcategories) 0 }}-open{{ end }} fa-fw"></i>
<a href="{{ "/categories/" | relLangURL }}{{ $parentName | urlize }}" class="mx-2">{{ $parentName }}</a>
<span class="text-muted small font-weight-light">
{{ if gt (len $subcategories) 0 }}
{{ len $subcategories }}
{{ if gt (len $subcategories) 1 }}
{{ i18n "categories.category_measure" | default (i18n "categories.category_measure.plural") }},
{{ else }}
{{ i18n "categories.category_measure" | default (i18n "categories.category_measure.singular") }},
{{ end }}
{{ end }}
{{ len $parentPages }}
{{ if gt (len $parentPages) 1 }}
{{ i18n "categories.post_measure" | default (i18n "categories.post_measure.plural") }}
{{ else }}
{{ i18n "categories.post_measure" | default (i18n "categories.post_measure.singular") }}
{{ end }}
</span>
</span>
{{ if gt (len $subcategories) 0 }}
<a href="#l_{{ $index }}" data-bs-toggle="collapse" aria-expanded="false" aria-label="{{ $parentName }}-trigger" class="category-trigger hide-border-bottom">
<i class="fas fa-fw fa-angle-down"></i>
</a>
{{ else }}
<span class="disabled">
<i class="fas fa-fw fa-angle-right"></i>
</span>
{{ end }}
</div>
{{ if gt (len $subcategories) 0 }}
<div id="l_{{ $index }}" class="collapse show">
<ul class="list-group">
{{ range $subcategories }}
{{ $subCategoryName := . }}
<!-- get pages related to the subcategories -->
{{ $subPages := slice }}
{{ range $parentPages }}
{{ if gt (len .Params.categories) 1 }}
{{ if eq (index .Params.categories 1) $subCategoryName }}
{{ $subPages = $subPages | append . }}
{{ end }}
{{ end }}
{{ end }}
<li class="list-group-item">
<i class="far fa-folder fa-fw"></i>
<a href="{{ "/categories/" | relLangURL }}{{ $subCategoryName | urlize }}" class="mx-2">{{ $subCategoryName }}</a>
<span class="text-muted small font-weight-light">
{{ len $subPages }}
{{ if gt (len $subPages) 1 }}
{{ i18n "categories.post_measure" | default (i18n "categories.post_measure.plural") }}
{{ else }}
{{ i18n "categories.post_measure" | default (i18n "categories.post_measure.singular") }}
{{ end }}
</span>
</li>
{{ end }}
</ul>
</div>
{{ end }}
</div>
{{ end }}
</div>
</article>
{{ end }}