categories nav 설정
메뉴의 카테고리를 생성하는 데이터가
배열형태로 사용하면 좋을것 같은데 좋은 구조로 만들어져 있지 않아서
코드를 확인하기 위해 AI 에게 문의했다.
이후 chatgpt 를 사용해서 코드를 변경까지 완료
parent_categories.yaml 파일의 사용처 및 동작 방식
parent_categories.yaml 파일은 블로그의 계층적 카테고리 시스템에서 부모-자식 카테고리 관계를 정의하는 데 사용됩니다. 이 파일은 다음과 같은 방식으로 작동합니다:
파일 구조 및 역할
parent_categories.yaml 파일은 /data/ 디렉토리에 위치하며 다음과 같은 형식으로 구성됩니다:
# 형식: 자식카테고리: 부모카테고리
기초: 선상낚시
한치: 선상낚시
github: dev
hugo: dev
jekyll: dev
junie: dev
default: 미분류
각 줄은 자식카테고리: 부모카테고리 형식으로 부모-자식 관계를 정의합니다.
사용되는 코드
이 파일은 주로 /layouts/partials/process-categories.html 템플릿에서 사용됩니다. 이 템플릿은 다음과 같은 작업을 수행합니다:
- 슬래시(/) 표기법을 사용한 카테고리를 처리합니다 (예: “선상낚시/기초”).
parent_categories.yaml에 정의된 부모-자식 관계를 처리합니다.- 이 정보를 바탕으로 계층적 카테고리 데이터 구조를 생성합니다.
관련 코드 부분:
{{ range $child, $parent := site.Data.parent_categories }}
{{ if not (isset $relationships $child) }}
{{ $relationships = merge $relationships (dict $child $parent) }}
{{ end }}
{{ if not (in $parentCategories $parent) }}
{{ $parentCategories = $parentCategories | append $parent }}
{{ end }}
{{ if not (isset $childCategories $parent) }}
{{ $childCategories = merge $childCategories (dict $parent (slice $child)) }}
{{ else }}
{{ $children := index $childCategories $parent }}
{{ if not (in $children $child) }}
{{ $children = $children | append $child }}
{{ $childCategories = merge $childCategories (dict $parent $children) }}
{{ end }}
{{ end }}
{{ end }}
사용되는 위치
이 처리된 카테고리 데이터는 다음 파일들에서 사용됩니다:
/layouts/partials/nav.html: 네비게이션 메뉴에서 계층적 카테고리를 표시합니다./layouts/taxonomy/category.html: 개별 카테고리 페이지에서 부모-자식 관계를 표시합니다./layouts/taxonomy/category.terms.html: 카테고리 목록 페이지에서 계층 구조를 표시합니다.
카테고리 지정 방법
블로그 포스트에 카테고리를 지정하는 방법에는 두 가지가 있습니다:
방법 1: 개별 카테고리 항목 사용
---
title: "포스트 제목"
categories:
- 부모카테고리
- 자식카테고리
---
이 방법을 사용할 경우, parent_categories.yaml 파일에 부모-자식 관계를 명시적으로 정의해야 합니다.
방법 2: 슬래시(/) 표기법 사용
---
title: "포스트 제목"
categories:
- 부모카테고리/자식카테고리
---
이 방법을 사용하면 parent_categories.yaml 파일에 관계를 별도로 정의하지 않아도 자동으로 계층 구조가 생성됩니다.
동작 방식 요약
process-categories.html템플릿이 모든 카테고리를 검사합니다.- 슬래시(/)가 포함된 카테고리를 발견하면, 이를 부모와 자식 부분으로 분리합니다.
parent_categories.yaml파일에서 정의된 관계를 처리합니다.- 이 정보를 바탕으로 계층적 카테고리 데이터 구조를 생성합니다.
- 이 데이터 구조는 네비게이션 메뉴와 카테고리 페이지에서 계층적 카테고리를 표시하는 데 사용됩니다.
이 시스템을 통해 블로그에서 2단계 깊이의 계층적 카테고리를 효과적으로 관리하고 표시할 수 있습니다.