글 열한 편을 카테고리로 나눴을 때의 분포. 네 편, 세 편, 두 편, 두 편으로 갈리고 한 칸에 두 편밖에 없는 칸이 생겨서, 나누면 정리돼 보이는 게 아니라 빈 칸이 드러난다.

·5분 읽기

카테고리를 만들려다 그만두고 시리즈를 붙였습니다


글이 열한 편쯤 쌓이니까 블로그 목록이 그냥 시간순 한 줄이었습니다. 네이버 블로그처럼 왼쪽에 카테고리를 만들어두면 정리돼 보이겠다 싶었습니다.

결국 카테고리는 안 만들었습니다. 대신 시리즈를 붙였습니다. 왜 그렇게 됐는지 적어둡니다.

나눠보니 한 칸에 두 편이었습니다

만들기 전에 종이에 먼저 갈라봤습니다. 열한 편을 주제별로 묶으면 이렇게 됩니다.

묶음편수
블로그 만들면서 겪은 것4
댓글 붙이기3
디버깅하다 배운 것2
나머지2

카테고리는 빈 칸이 보이는 구조입니다. 목록에 이름이 먼저 뜨고 그 옆에 숫자가 붙습니다. “디버깅 (2)“이라고 적혀 있으면 읽는 사람이 눌러보고 두 편을 봅니다. 그리고 닫습니다.

시간순 목록은 적어도 “여기가 전부”라는 인상을 주지 않습니다. 카테고리는 각 칸이 얼마나 비어 있는지를 정직하게 보여줍니다. 지금 제 블로그 규모에서는 그게 손해였습니다.

그리고 페이지가 열아홉 개 더 생깁니다

더 걸린 건 이쪽입니다.

카테고리를 만들면 /category/댓글/ 같은 목록 페이지가 카테고리 수만큼 생깁니다. 글 두세 편이 들어 있는 목록 페이지요.

바로 앞 글에서 저는 똑같은 물건을 색인에서 빼내고 있었습니다. 글 한 편짜리 태그 페이지가 사이트맵의 3분의 2를 차지하고 있어서, 사이트맵에서 빼고 noindex를 붙였거든요.

한쪽에서 얇은 목록 페이지를 치우면서 다른 쪽에서 얇은 목록 페이지를 만드는 셈이었습니다. 이걸 깨닫고 나서 손을 멈췄습니다.

셋은 각각 다른 문제를 풉니다

정리하다 보니 태그·카테고리·시리즈가 서로 대체재가 아니라는 게 보였습니다.

태그, 카테고리, 시리즈가 각각 답하는 질문을 비교한 그림. 태그는 이 글이 무엇에 대한 글인지, 카테고리는 이 블로그가 어떤 구역으로 나뉘는지, 시리즈는 이 글 다음에 뭘 읽어야 하는지에 답한다. 글이 열한 편일 때 실제로 아쉬운 건 세 번째다.

태그는 “이 글은 무엇에 대한 글인가”에 답합니다. 한 글에 여러 개 붙고, 주제를 가로질러 묶습니다. 이미 붙여뒀습니다.

카테고리는 “이 블로그는 어떤 구역으로 나뉘나”에 답합니다. 한 글에 하나만 붙고, 블로그 전체의 뼈대가 됩니다. 뼈대를 세우려면 채울 살이 있어야 합니다.

시리즈는 “이 글 다음에 뭘 읽어야 하나”에 답합니다. 순서가 있다는 게 앞의 둘과 다른 점입니다.

이렇게 적어놓고 보니, 제가 실제로 아쉬웠던 건 세 번째였습니다.

댓글 서버를 붙이면서 쓴 글이 세 편인데 발행일이 이틀씩 떨어져 있습니다. 검색으로 두 번째 글에 들어온 사람은 첫 번째 글이 있다는 걸 모릅니다. 목록을 뒤져야 알 수 있고, 아무도 그러지 않습니다.

카테고리를 만들어도 이건 안 풀립니다. 카테고리 페이지에 들어가야 보이니까요. 필요한 건 글을 읽고 있는 그 자리에 다음 편을 놓아주는 것이었습니다.

붙이는 데 필요한 건 필드 하나였습니다

글머리에 한 줄 적습니다.

series: 정적 블로그에 댓글 붙이기

이름이 같은 글끼리 묶고, 작성일순으로 세웁니다. 조건이 하나 붙습니다.

const entries = posts
  .filter((post) => post.data.series === series)
  .sort((a, b) =>
    a.data.pubDate.valueOf() - b.data.pubDate.valueOf(),
  );

return entries.length > 1 ? entries : [];

마지막 줄입니다. 두 편 이상일 때만 돌려줍니다. 한 편짜리 시리즈는 보여줄 게 없습니다. 이 한 줄이 없으면 “시리즈 · 1편 중 1편” 같은 민망한 상자가 뜹니다.

글 페이지에는 제목 아래에 상자가 하나 붙습니다. 시리즈 이름, “3편 중 2편”, 그리고 전체 목록. 지금 읽고 있는 편은 링크가 아니라 굵은 글씨로 두었습니다. 자기 자신으로 가는 링크만큼 쓸모없는 것도 없어서요.

새 주소를 하나도 안 만들었습니다

여기가 카테고리와 갈리는 지점입니다.

시리즈 상자는 글 페이지 안에 들어갑니다. /series/댓글-붙이기/ 같은 목록 페이지를 안 만들었습니다. 만들 수도 있었지만, 그럼 아까 그 얇은 페이지가 또 생깁니다.

만들고 싶은 충동은 있었습니다. 시리즈 목록 페이지가 있으면 “완성도 있어” 보이니까요. 그런데 그 페이지에 들어갈 내용은 글 페이지에 이미 다 떠 있는 것과 똑같습니다. 주소만 하나 더 생기는 겁니다.

필요해지면 그때 만들면 됩니다. 지금 안 만드는 게 기능입니다.

CMS 쪽에도 칸을 하나 팠습니다

휴대폰에서도 글을 쓰기 때문에 편집기 설정에도 넣어야 했습니다.

- label: 시리즈
  name: series
  widget: string
  required: false
  hint: 이어지는 글이면 시리즈 이름을 똑같이. 비워두면 시리즈 없음

자유 입력이라 대가가 있습니다. 오타가 나면 시리즈가 갈라집니다. “댓글 붙이기”와 “댓글붙이기”는 다른 시리즈가 됩니다.

목록에서 고르게 만들 수도 있었는데, 그러면 새 시리즈를 시작할 때마다 설정 파일을 고쳐야 합니다. 휴대폰에서 글을 쓰다가 설정 파일을 고칠 수는 없으니, 오타 위험을 안고 자유 입력으로 뒀습니다. 힌트 한 줄이 제가 할 수 있는 최선이었습니다.

목록을 나누고 싶어질 때

이번 건으로 확인할 게 생겼습니다.

나눠보면 한 칸에 몇 편인가 — 종이에 먼저 갈라봅니다. 한 칸에 두세 편이면 나누는 쪽이 손해입니다. 만들기 전에 5분이면 알 수 있습니다.

그 나누기가 페이지를 만드나 — 분류가 늘면 대개 주소가 늘어납니다. 그 주소에 들어갈 내용이 목록 한 줄뿐이라면, 한 번 더 생각해볼 만합니다.

독자가 겪는 불편이 정확히 뭔가 — “못 찾겠다”와 “다음 걸 모르겠다”는 다른 문제입니다. 전자는 분류로 풀고 후자는 순서로 풉니다. 저는 후자였는데 전자를 만들려고 했습니다.

남겨둔 것

카테고리를 영영 안 만들겠다는 건 아닙니다. 글이 스무 편쯤 되면 한 칸에 대여섯 편이 들어갈 테고, 그때는 얘기가 다를 겁니다.

다만 그건 그때 가서 판단할 일이고, 지금 미리 만들어두면 그동안은 빈 칸을 보여주게 됩니다. 기능은 늦게 만들수록 정보가 많습니다.

참고한 문서


댓글

로그인도 이메일도 필요 없습니다. 이름만 적고 편하게 남겨주세요.