Github 블로그 만들기 with Hexo - 카테고리 보기 커스터마이징
목차
all-categories에서 leaf 카테고리 일때만 글 목록을 보여주고 싶은데요.
왠지 그런 옵션은 없는것 같아서 ejs 템플릿을 건드려보도록 하겠습니다.
이와같이 “개발”에 하위 카테고리들의 포스트가 중복되어 나오는게 맘에안듭니다.
최하위 카테고리에서만 글 목록 보이기
themes/tranquilpeak/layout/all-categories.ejs
를 열어봅시다.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20function displayCategoriesAndPosts(category) {
// get its posts
var posts = category.posts;
// ...
// ...
// create html for its posts
posts.sort('date', 'desc').forEach(function(post) {
/********** 이 부분을 추가합시다. ***********/
if (childCategories.length > 0) {
return;
}
/********** 여기까지요. *******************/
html += '<li class="archive-post">';
html += '<a class="archive-post-title" href="' + url_for(post.path) + '">';
// ...
});
// ...
}
저 if 문이 핵심입니다. 의미를 잘 곱씹어보면 왜그런지 이해가 되실거에요.
1 | 단, 모든 글이 전부 최하위 카테고리에 있을때만 제대로 나타납니다. 예를들어 |
위 처럼 중간 카테고리에서는 글목록이 나타나지 않습니다.
카테고리를 사이드바로 빼기
위와는 상관이 없습니다만 문득 최상위 카테고리를 사이드바로 빼고 all-categories를 없애면 어떨까 하는 생각이 들었습니다. 그래서 약간의 개발을 해봤습니다. 위에 수정한 코드를 이용해도 되고 안해도 됩니다.
themes/tranquilpeak/layout/category-by-name.ejs
파일을 생성하고all-categories.ejs
의 내용을 붙여넣습니다.
그리고는 아래를 참고하여 수정합니다.
1 | <!-- 윗부분은 생략합니다. 대충 아래랑 비슷한 부분부터 시작해주세요. --> |
저는 사이드바에 꺼낸 카테고리의 링크를 category-카테고리명
으로 설정하려고 하는데요.
각 글 페이지에서 url_for(path)
를 호출하면 /category-카테고리명/index.html
이 됩니다.
var currentCategory = url_for(path).split('/')[1].replace("category-", "")
에서는
따라서 currentCategory 에는 카테고리명
만 남게됩니다.
이 값을 site.categories.find({'name': currentCategory})
처럼 넣어 호출하면 찾아집니다.
그 후 프로젝트의 source
디렉토리에 page 디렉토리를 생성하면 되는데요.category-카테고리명
형식으로 만들면 되겠습니다.
그 안에 ìndex.md
를 생성하고 아래처럼 코드를 넣습니다.
1 | --- |
그 후 themes/tranquilpeak/_config.yml
를 열어 메뉴를 편집합니다.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# ... 생략
sidebar:
menu:
home:
title: global.home
url: /
icon: fa fa-home
# 전체 카테고리 안쓸거라 주석처리했습니다. 쓸거면 풀어주세요.
# categories:
# title: global.categories
# url: /all-categories
# icon: fa fa-bookmark
category-name: # key 이름은 아무거나 써도 되나봅니다.
title: 카테고리명 # 메뉴에 표시될 이름을 써주세요. 아니면 en.yml 등의 key를 명시해주세요.
url: /category-카테고리명 # "category-카테고리명" 형태로 써주세요. 그래야 ejs에서 파싱합니다.
icon: fa fa-calendar # 아이콘도 맘에드는걸로 ..
# 후략 ...
이처럼 수정하고 재시작하면 카테고리가 사이드바로 빠져나와 있을것입니다.
메뉴에 표시되는 아이콘을 변경하고 싶으시면 fontawesome
에서 찾은 클래스명을 icon
에 넣어주면 되는데요. Font Awesome에서 쉽게 찾을 수 있습니다.
마치며
아직 부작용은 찾지 못했습니다만 무슨일이 생길진 좀 더 두고봐야겠습니다.
혹시 더 좋은 방법 아는분 계시면 알려주세요.