컬렉션은 한 종류의 콘텐츠와 편집자가 이를 생성하는 데 사용하는 양식을 정의합니다. 필드는 각 항목이 포함할 수 있는 값을 정의합니다. 예를 들어, 제품 컬렉션에는 제목, 가격, 설명, 제품 이미지, 브랜드 항목에 대한 참조가 포함될 수 있습니다.
관리자는 콘텐츠 유형에서 컬렉션을 관리합니다. 시드 파일은 사이트나 환경이 구성에서 설정될 때 동일한 컬렉션 설정을 정의할 수 있습니다.
컬렉션 식별
모든 컬렉션에는 복수형 레이블, 선택적 단수형 레이블, 슬러그가 있습니다. 레이블은 관리 패널에 표시됩니다. 슬러그는 쿼리, API 라우트, 시드 파일, 데이터베이스에서 컬렉션을 식별합니다.
예를 들어, 블로그 게시물로 레이블이 지정된 컬렉션은 단수형 레이블로 블로그 게시물, 슬러그로 posts를 사용할 수 있습니다. Astro 코드는 해당 슬러그로 쿼리합니다:
import { getEmDashCollection } from "emdash";
const { entries: posts } = await getEmDashCollection("posts");
컬렉션을 만들기 전에 슬러그를 선택하세요. 관리 패널은 나중에 컬렉션 슬러그나 필드 슬러그의 이름을 변경하지 않습니다. 기존 쿼리와 저장된 열이 이에 의존하기 때문입니다. 슬러그는 소문자로 시작하고, 소문자, 숫자, 밑줄만 포함하며, 최대 63자입니다. EmDash는 자체 라우트와 항목 데이터에서 사용되는 예약 이름도 거부합니다.
컬렉션 동작
컬렉션 설정은 편집자와 공개 페이지가 항목을 사용하는 방법을 제어합니다:
- 라우팅 가능은 항목이 게시되기 전에 공개 슬러그를 요구합니다. URL 패턴은 항목 슬러그 또는 ID를 게시 날짜와 결합하여 공개 경로를 생성할 수 있습니다.
- 초안은 편집자가 게시 전에 작업을 저장할 수 있게 합니다.
- 리비전은 콘텐츠 이력의 스냅샷을 유지합니다.
- 미리보기는 게시되지 않은 콘텐츠에 대한 서명된 미리보기 URL을 제공합니다.
- 검색은 검색 가능으로 표시된 필드에 대한 전문 검색을 활성화합니다.
- SEO는 제목, 설명, 이미지 메타데이터 필드를 추가하고 컬렉션을 사이트맵에 포함합니다.
- 편집 잠금은 한 편집자가 작업하는 동안 항목을 유지하고 잠금이 해제될 때까지 다른 작성자를 거부합니다.
- 댓글은 컬렉션별로 활성화할 수 있으며, 중재 및 자동 닫기 설정이 있습니다.
- 그룹은 컬렉션을 사이드바의 접을 수 있는 폴더에 배치합니다. 같은 그룹의 컬렉션은 하나의 폴더를 공유하며, 첫 번째 컬렉션이 나타날 위치에 배치됩니다. 택소노미는 할당된 모든 컬렉션이 해당 폴더에 표시될 때 폴더에 합류합니다.
사이트가 실제로 사용하는 동작을 활성화하세요. 예를 들어, 미리보기를 켜면 미리보기 URL이 제공되지만, Astro 페이지는 여전히 항목과 미리보기 상태를 올바르게 렌더링해야 합니다. 전체 흐름은 미리보기 모드를 참조하세요.
필드 유형
편집자가 입력하는 값과 애플리케이션 코드가 받는 방식에 맞는 필드 유형을 선택하세요. EmDash는 16가지 필드 유형을 지원합니다:
| 콘텐츠 요구 | 필드 유형 | 편집자가 작업하는 것 |
|---|---|---|
| 짧거나 긴 텍스트 | string, text, slug, url | 텍스트 입력, 텍스트 영역, URL 값 |
| 숫자 | number, integer | 소수 또는 정수 입력 |
| 상태와 시간 | boolean, datetime | 스위치 또는 날짜 시간 선택기 |
| 고정 선택 | select, multiSelect | 구성된 옵션에서 하나 또는 여러 선택 |
| 리치 또는 구조화된 데이터 | portableText, json, repeater | 리치 텍스트, JSON, 또는 하위 필드의 반복 그룹 |
| 미디어 | image, file | 미디어 라이브러리에서 선택한 항목 |
| 관계 | reference | 다른 컬렉션에서 선택한 항목 |
유형은 편집기 컨트롤 이상입니다. EmDash가 값을 저장하고 유효성을 검사하는 방법과 생성된 TypeScript 선언이 이를 설명하는 방법도 결정합니다. 필드 유형 참조에서 각 유형의 값 형태와 옵션을 확인하세요.
필드 규칙
모든 사용자 정의 필드에는 레이블과 슬러그가 있습니다. 다음 옵션은 동작을 추가로 설명합니다:
- 필수는 값 없이 항목을 저장하는 것을 방지합니다.
- 고유는 컬렉션의 두 항목이 같은 값을 사용하는 것을 방지합니다.
- 기본값은 적절한 경우 시작 값을 제공합니다.
- 유효성 검사는 필드 유형에 따라 텍스트 길이, 숫자 범위, 패턴, 선택, 파일 유형 또는 반복기 길이를 제한할 수 있습니다.
- 검색 가능은 지원되는 텍스트 필드를 컬렉션의 전문 검색 인덱스에 포함합니다.
- 인덱스됨은 지원되는 필드에서 정렬 또는 필터링을 위한 데이터베이스 인덱스를 생성합니다.
- 번역 가능은 각 로케일이 자체 값을 가지는지 여부를 제어합니다. 번역 불가 값은 같은 항목의 번역 간에 공유됩니다.
쿼리가 해당 사용자 정의 필드로 정렬하거나 필터링할 때 인덱스됨을 켜세요. 인덱스는 데이터베이스가 일치하거나 정렬된 항목을 찾는 데 도움이 되지만, 추가 스토리지를 사용하고 콘텐츠가 생성되거나 업데이트될 때마다 작업이 추가됩니다. 페이지가 필드를 표시한다는 이유만으로 인덱스를 만들지 마세요.
인덱스는 string, url, number, integer, boolean, datetime, select, reference, slug 필드에서 사용할 수 있습니다. 리치 텍스트, JSON, 반복기, 다중 선택 값은 더 복잡한 데이터를 포함하며 이 종류의 인덱스를 사용할 수 없습니다.
참조는 대상 항목의 ID를 저장합니다. 대상 컬렉션으로 참조를 구성하고, 필드가 여러 항목 ID를 보유해야 할 때만 다중 값을 활성화하세요. 참조는 코드가 관련 콘텐츠를 로드하거나 식별할 수 있게 합니다. 대상 항목을 소스 항목에 복사하지 않습니다.
나중에 필드 변경
레이블, 유효성 검사, 검색 설정, 인덱스, 위젯 옵션, 표시 순서는 필드를 교체하지 않고 변경할 수 있습니다. 필드를 추가하면 모든 기존 항목이 유지되지만, 사이트가 값을 기대하는 경우 해당 항목에 새 필드의 값이 필요합니다.
마이그레이션은 기존 값을 변환하고, 모델을 업데이트하고, 배포 중에 이전 및 새 애플리케이션 코드의 호환성을 유지해야 합니다. 이러한 변경을 하기 전에 배포된 사이트의 스키마 진화를 따르세요.
관련 작업
항목을 만들고 게시하려면 콘텐츠 작업을 사용하세요. 필터링하고 정렬하려면 콘텐츠 쿼리를 사용하세요. 생성된 유형과 시드 파일에 대해서는 콘텐츠 모델을 참조하세요.