이 기능을 사용하면 게시물을 삭제하거나 초안(Draft) 상태로 두지 않고도, 정확한 URL을 아는 사람에게만 내용을 공유할 수 있습니다.
주요 기능: Unlisted란?
unlisted: true 설정이 적용된 게시물은 블로그 내의 모든 자동 노출 경로에서 제외됩니다. 하지만 페이지 자체는 생성되므로 직접적인 링크를 통해서는 접근이 가능합니다.
다음 목록에서 게시물이 숨겨집니다:
- Home page: 메인 포스트 리스트
- Archive page: 전체 아카이브 목록
- Tag & Category: 태그 및 카테고리별 분류 페이지
- Search results: 내장 검색 엔진(Pagefind) 결과
- RSS feed: 구독 서비스 피드
주요 변경 사항
이번 기능 구현을 위해 수정된 주요 로직은 다음과 같습니다.
1. 콘텐츠 설정 업데이트 (src/content/config.ts)
포스트의 Frontmatter에서 unlisted 속성(boolean)을 인식할 수 있도록 스키마를 추가했습니다.
2. 필터링 로직 수정 (src/utils/content-utils.ts)
기본적으로 게시물 목록을 가져올 때 unlisted 상태인 포스트를 제외하도록 필터링 로직을 개선했습니다.
3. 동적 경로 생성 및 검색 차단 (src/pages/posts/[...slug].astro)
- 경로 생성: 목록에는 보이지 않더라도 상세 페이지는 생성되어야 하므로,
getStaticPaths에서 숨김 포스트를 포함하도록 수정했습니다. - 검색 엔진 제외:
Pagefind가 해당 포스트의 내용을 수집하지 않도록data-pagefind-ignore속성을 동적으로 추가했습니다.
5. 다국어 지원 (README 업데이트)
글로벌 사용자를 위해 한국어를 포함하여 영어, 스페인어, 일본어, 중국어 등 총 8개 언어의 README 파일에 관련 설명을 추가했습니다. (AI 번역을 통해 자연스러운 문맥으로 다듬었습니다.)
사용 방법
게시물의 Markdown 파일 상단(Frontmatter)에 unlisted: true를 추가하기만 하면 됩니다.
---title: 나만 알고 싶은 비밀 글published: 2024-05-20description: 이 글은 메인 목록에 나타나지 않습니다.image: "./cover.jpg"tags: [Secret]category: Journaldraft: falseunlisted: true # <--- 이 줄을 추가하세요!---관련 링크 및 기여
현재 원본 레포지토리에 Pull Request를 보낸 상태이며 수락을 기다리고 있습니다. 이 기능을 미리 사용해 보고 싶으신 분들은 제 포크 레포지토리를 이용해 주세요!
- Official Pull Request: saicaca/fuwari #714
- Unofficial Repo (Feature included): HAMSU-5/fuwari_with_unlisted
Note:
pnpm check실행 시 발생하는 일부 에러(Navbar, Archive 관련)는 기존 테마의 타입 에러이며, 이번 Unlisted 기능 추가와는 무관함을 확인했습니다. 기능은 정상적으로 작동합니다.
마치며
블로그를 운영하다 보면 전체 공개하기에는 조금 쑥스럽지만/규정상 불가능이지만, 누군가에게 링크로만 공유하고 싶은 글이 있기 마련입니다. 이 기능이 Fuwari 사용자분들에게 유용한 기능이 되길 바랍니다!