포스트

Github blog 만들기 - 4 - GitHub Blog 커스터마이징


목차

  1. 기본 설정 변경
  2. Favicon 변경
  3. 프로필 사진 변경
  4. 검색 결과 레이아웃 변경
  5. 이전글, 다음글 설정 변경
  6. 기타 설정


기본 설정 변경

Chirpy를 적용하면 처음에 기본으로 적용된 설정이 있다.
Repository에 많은 폴더가 존재하는데 각 폴더와 yml 파일의 내용은 아래 표와 같다.

폴더/파일설명
_config.ymlJekyll 설정 파일로, 사이트의 기본 설정을 정의합니다.
_layouts레이아웃 파일을 포함하는 폴더로, 페이지의 구조를 정의합니다.
_includes템플릿에서 재사용되는 부분을 포함하는 폴더입니다.
_sassscss 파일을 포함하는 폴더로, 스타일 시트를 정의합니다.
_posts블로그 포스트가 담긴 폴더입니다.
assetscss, img, js 등과 같은 정적 자산을 포함한다.
toolsGitHub에서 배포를 위한 코드가 들어 있다. 수정하지 않는것이 좋다.

이제 나만의 블로그를 위해서 셋팅을 할 것 이다.

1) .travis.yml 파일이 존재한다면 삭제한다.
2) _posts 폴더 하위의 파일들을 삭제한다.
         → 블로그 글의 예시가 있으므로 확인 후 삭제하는 것이 좋을 수 있다.
3) docs 폴더를 삭제한다.
4) github>workflows>pages-deploy.yml.hook 파일 제외하고 .github 폴더의 나머지 파일 삭제
5) github>workflows>pages-deploy.yml.hookgithub>workflows>pages-deploy.yml로 변경
6) _config.yml을 수정한다.

항목설명
langko-KR언어를 한글로 설정
timezoneAsia/Seoul서울 표준시로 설정
title원하는 값블로그 제목
tagline원하는 값title 아래의 sub title
description원하는 값seo를 위한 키워드 입력
urlhttps:{GitHub ID}.github.io블로그 URL
githubGitHub ID본인의 GitHub ID
twitter.usernametwitter id트위터 ID
social.name이름포스트에 표시할 이름
social.email이메일본인의 이메일
social.linksSNS본인의 SNS의 홈 URL
google_site_verificationGoogle Search Console IDGoogle Search Console
google_analyticsGoogle Analytics IDGoogle Analytics
theme_modelight or dark테마 스킨
avatar이미지 경로프로필 이미지 경로
toctrue포스팅 된 글의 목차 표시
disqushttps://disqus.com/ 에 가입 후 shortname댓글 기능
paginate10목록에 몇개의 글을 표시


제가 설정한 _config.yml 입니다.
수정하실 때 어렵다면 참고하시면 됩니다.
_config.yml을 수정하면 항상 jekyll을 재구동 해줘야합니다.

Favicon 변경

파비콘이란 웹 브라우저 상단에 사이트 제목과 함깨 뜨는 작은 아이콘입니다.
주소 표시줄에서 웹 사이트를 식별하는데 사용됩니다.
파비콘은 주로 16X16 픽셀 크기의 이미지로 제작되며 ICO 형식으로 제공되거나 웹페이지의 HTML 코드에서 링크를 통해 지정할 수 있습니다.
Real Favicon Generator에 접속합니다.
파란색 Select your Favicon image 버튼을 클릭 후 파비콘으로 사용하려는 이미지를 업로드 합니다.
image 하단의 Generate your Favicons and HTML code 버튼을 클릭해줍니다.
image Favicon packag 버튼을 클릭하면 .zip 파일이 다운로드 됩니다. image 해당 .zip 파일을 압축 해제한 다음 browserconfig.xmlsite.webmanifest 파일을 삭제해줍니다.
image 나머지 파일들은 assets/img/favicons 폴더에 넣어줍니다
그 다음 _includes/favicons.html 파일을 열어서 href 부분을 아래와 같이 수정해줍니다
image 그렇게 되면 Favicon이 적용된 것을 확인할 수 있습니다.
image

프로필 사진 변경

좌측 사이드바의 프로필 사진을 변경하려면 assets/img 폴더 아래에 원하시는 이미지를 추가합니다.
저는 profile.jpg 이라는 이미지를 추가하였습니다.
그리고 _inclues/sidebar.html을 수정하면 됩니다.
<img src="{​{- avatar_url -}​}" width="112" height="112" alt="avatar" onerror="this.style.display='none'"><img src="/assets/img/profile.jpg" width="112" height="112" alt="avatar" onerror="this.style.display='none'">로 변경하면 됩니다.
혹은 src 부분에 원하는 이미지의 URL을 입력하면 됩니다.

검색결과 레이아웃 변경

Chirpy 테마에서 검색을 하면 결과물에 제목, 카테고리, 태그, 내용이 포함되고
한 줄에 2개의 결과씩 출력이 되는 것을 확인할 수 있다. image

우선 검색 결과물에 내용이 출력되지 않도록 하고 싶고
언제 작성했는지 작성일자를 추가하고 싶다.

1) 검색 결과물에 내용이 출력되지 않는 법
_includes/search-loader.html파일에서 <p>{snippet}</p>이 부분을 주석처리한다.

2) 검색 결과물에 작성 날짜 출력하는 방법
assets/js/data/search.json 파일에서 "date": "{​{ post.date }​}"
"date": "{​{ post.date | date: "%Y-%m-%d"}​}", 이렇게 변경한다.
그리고 _includes/search-loader.html 파일에서 주석으로 처리한 <p>{snippet}</p> 윗 라인에
{date}를 추가해준다.

그 다음에는 한 줄에 1개의 검색 결과만 출력되게 하고싶다.
_includes/search-results.html파일의 <div id="search-results" class="d-flex flex-wrap justify-content-center text-muted mt-3"></div> 부분을
<div id="search-results" class="d-flex flex-column justify-content-center text-muted mt-3"></div> 이렇게 변경한다.
그리고 _saas/addon/commons.scss파일에서 #search-results > article 이 부분을 찾아서 주석처리해준다.

위의 내용을 모두 반영하면 아래와 같이 한 줄에 1개의 검색 결과만 출력되게 변경된다.
image

이전글, 다음글 설정 변경

다른 분들의 GitHub 블로그를 구경할때 현재 글의 주제와 상관없는 글로 다음글 설정이 되어있으면
글을 읽을 때 불편하다고 생각해서 카테고리별로 이전글, 다음글이 설정되었으면 좋겠다고 생각했다.

_includes/post-nav.html 파일에서 이전, 다음글 설정을 할 수 있는데
<nav> 태그 하위의 내용을 아래와 같이 변경한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  ​{​% assign cat = page.categories[0] ​%​}​
    ​{​% assign cat_list = site.categories[cat] ​%​}​
    ​{​% for post in cat_list ​%​}​
        ​{​% if post.url == page.url ​%​}​
            ​{​% assign prevIndex = forloop.index0 | minus : 1 ​%​}​
            ​{​% assign nextIndex = forloop.index0 | plus : 1 ​%​}​
            ​{​% if forloop.first == false ​%​}​
                ​{​% assign next_post = cat_list[prevIndex] ​%​}​
            ​{​% endif ​%​}​
            ​{​% if forloop.last == false ​%​}​
                ​{​% assign prev_post = cat_list[nextIndex] ​%​}​
            ​{​% endif ​%​}​
            ​{​% break ​%​}​
        ​{​% endif ​%​}​
    ​{​% endfor ​%​}​
    ​{​% if prev_post ​%​}​
        <span class="previous-post">Previous :
            <a href="" class="pagination--pager"></a>
        </span>
    ​{​% else ​%​}​
        <span class="previous-post">
            <a href="#" class="pagination--pager disabled"></a>
        </span>
    ​{​% endif ​%​}​

    ​{​% if next_post ​%​}​
        <span class="next-post">Next :
            <a href="" class="pagination--pager"></a>
        </span>
    ​{​% else ​%​}​
        <span class="next-post">
            <a href="#" class="pagination--pager disabled"></a>
        </span>
    ​{​% endif ​%​}​

카테고리별로 이전글, 다음글 설정이 되면서 카테고리의 첫 번째 글에서는 Previous가 표기되지 않고 마지막글에서는 Next가 표기되지 않는다.

카테고리의 글 순서는 _posts 폴더에 있는 md 파일의 YAML 프론트매터를 사용하여 메타데이터를 지정한다.
메타데이터 중 date 필더를 기반으로 포스트가 정렬됩니다.

만약 날짜 이외의 다른 기준으로 포스트를 정렬하고 싶다면 _config.yml 파일에서

1
2
3
4
collections:
  tabs:
    output: true
    sort_by: order

이 부분을

1
2
3
4
5
6
collections:
  posts:
    output: true
    order:
      - field: 원하는 기준
        direction: asc or desc

이렇게 설정을 변경하면 됩니다.

기타 설정

위의 내용을 다 따라하기 보다는 본인이 원하는 부분을 원하는 방식으로 변경하면 된다.
localhost:4000으로 블로그를 띄워놓고 본인이 수정하기 원하는 부분을 개발자 모드를 이용해서 찾으면 된다.
수정하고 싶은 영역에서 마우스 오른쪽 버튼 클릭 > 검사를 클릭해서 태그나 css 내용등을 찾은 뒤
IDE로 돌아와서 검색 기능을 통해서 태그 정보나 css 정보를 입력해서 설정이 존재하는 파일을 찾는다
그리고 본인이 원하는 내용으로 수정하면 됩니다.


다음에는 블로그에 댓글 기능을 추가하는 방법을 알아보도록 하겠다.