Jekyll 기반 GitHub 블로그를 카테고리별로 나눠서 정리하고 싶다면,
_data/navigation.yml, _includes/sidebar.html, _config.yml 설정이 핵심입니다.
이 포스트에서는 minimal-mistakes 테마 기준으로
카테고리를 생성하고 사이드바에 자동으로 표시하는 설정법을 순차적으로 설명합니다.

이 글은 기본적인 마크다운 문법을 알고 있다고 가정하고 진행합니다.

https://www.markdownguide.org/

해당 사이트에서 마크다운 문법을 알아볼 수 있습니다.

GitHub Blog 카테고리 설정

._data\navigation.yml 부분입니다.

main:
  - title: "Quick-Start Guide"
    url: https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/
  # - title: "About"
  #   url: https://mmistakes.github.io/minimal-mistakes/about/
  # - title: "Sample Posts"
  #   url: /year-archive/
  # - title: "Sample Collections"
  #   url: /collection-archive/
  # - title: "Sitemap"
  #   url: /sitemap/

Quick-Start Guide 해당 부분을 지워줍니다.

- title: "Home"
    url: /
  - title: "category"
    url: /categories/
    children:
      - title: "Assembly"
        url: /categories/assembly/
    children:
      - title: "Blog"
        url: /categories/blog/

그리고 위와 같이 카테고리를 추가합니다.

._includes\sidebar.html 입니다.

{% if page.author_profile or layout.author_profile or page.sidebar %}
<div class="sidebar sticky">
  {% if page.author_profile or layout.author_profile %} {% include
  author-profile.html %} {% endif %}

  <nav class="nav__list">
    <ul class="nav__items">
      <!-- HOME -->
      <li>
        <a
          href="{{ '/' | relative_url }}"
          class="nav__item{% if page.url == '/' %} active{% endif %}"
        >
          Home
        </a>
      </li>

      <!-- Divider -->
      <li><hr class="nav-divider" /></li>

      <!-- CATEGORY TITLE -->
      <li class="nav__title">Category</li>

      <!-- All -->
      <li>
        <a
          href="{{ '/categories/' | relative_url }}"
          class="nav__item{% if page.url == '/categories/' %} active{% endif %}"
        >
          - All <span class="count">({{ site.posts | size }})</span>
        </a>
      </li>

      <!-- Dynamic categories with count -->
      {% for nav_item in site.data.navigation.main %} {% if nav_item.children %}
      {% for child in nav_item.children %} {% assign category_name = child.url |
      split: '/' | last %} {% assign category_posts =
      site.categories[category_name] %}
      <li>
        <a
          href="{{ child.url | relative_url }}"
          class="nav__item{% if page.url == child.url %} active{% endif %}"
        >
          - {{ child.title }} {% if category_posts %}
          <span class="count">({{ category_posts | size }})</span>
          {% endif %}
        </a>
      </li>
      {% endfor %} {% endif %} {% endfor %}
    </ul>
  </nav>
</div>
{% endif %}

위와 같이 카테고리를 설정해줍니다.

._pages\categories.md 추가

---
title: "category"
layout: categories
permalink: /categories/
---

예시) ruyshy.github.io/categories/ 페이지

이어서 ._pages\assembly.md

---
title: "Assembly"
layout: category
permalink: /categories/assembly/
taxonomy: assembly
---

예) assembly 카테고리 추가) ruyshy.github.io/categories/assembly/

._sass_navigation.scss 편집을 진행합니다.

.nav__list .nav__items { ...(source) .count { font-weight: normal; color: #888;
margin-left: 5px; }

.count 부분을 추가해줍니다. (css 스타일 설정 카테고리 옆에 숫자)

._config.yml 해당 파일을 편집을 진행합니다.

# Defaults
defaults:
  # _posts
  - scope:
      path: ""
      type: posts
      values:
        sidebar:
          nav: "main"

    values:
      layout: single
      author_profile: true
      read_time: true
      comments:
      provider: "utterances"
      utterances:
        theme: "github-dark"
        issue_term: "pathname"
        label: "comment"
      share: true
      related: true
      sidebar:
        nav: "main"

  # _pages
  - scope:
      path: ""
      type: pages
    values:
      layout: home
      author_profile: true

  #assembly categories
  - scope:
      path: "_posts/assembly"
      type: posts
    values:
      categories: [assembly]
      sidebar:
        nav: "main"

    #blog categories
  - scope:
      path: "_posts/blog"
      type: posts
    values:
      categories: [blog]
      sidebar:
        nav: "main"

현재 저의 defaults: 코드입니다.

주목해야 할 부분

values:
  layout: single
  author_profile: true
  read_time: true
  comments:
  provider: "utterances"
  utterances:
    theme: "github-dark"
    issue_term: "pathname"
    label: "comment"
  share: true
  related: true
  sidebar:
    nav: "main"

해당 부분에 sidebar: 부분과

#assembly categories
- scope:
    path: "_posts/assembly"
    type: posts
  values:
    categories: [assembly]
    sidebar:
      nav: "main"

  #blog categories
- scope:
    path: "_posts/blog"
    type: posts
  values:
    categories: [blog]
    sidebar:
      nav: "main"

해당 카테고리를 설정한 assembly, blog 부분입니다.

“_post/assembly” 경로에 설정에서 values: categories : [assembly] 이 값이 있으면 해당 경로에 Post는 자동으로 카테고리가 설정 됩니다.

Leave a comment