콘텐츠 모델

이 페이지

콘텐츠 모델은 사이트가 저장하는 정보를 설명합니다. EmDash에서 모델은 컬렉션과 필드로 구성됩니다. 데이터베이스가 해당 모델을 저장하고, 관리 패널이 이를 사용하여 편집자가 작업하는 양식을 구축합니다.

컬렉션, 필드, 항목

컬렉션은 게시물, 제품, 작성자 같은 콘텐츠의 종류입니다. 필드는 제목, 본문, 가격, 작성자 참조 같은 해당 콘텐츠의 하나의 정보입니다. 항목은 컬렉션에 저장된 하나의 아이템입니다.

예를 들어, 게시물 컬렉션에는 다음 필드가 있을 수 있습니다:

Posts
├── Title          짧은 텍스트, 필수
├── Excerpt        긴 텍스트, 선택
├── Content        리치 텍스트, 선택
└── Featured image 이미지, 선택

EmDash는 ID, 공개 슬러그, 게시 상태, 작성자, 생성 및 업데이트 시간, 로케일, 리비전 참조를 포함하여 모든 항목에 필요한 정보도 관리합니다. 쿼리 결과는 컬렉션에 정의된 필드와 함께 이러한 표준 정보를 노출합니다.

항목을 삭제하면 삭제 시간이 설정되어 휴지통으로 이동합니다. 관리자는 누군가가 휴지통에서 영구적으로 삭제할 때까지 복원할 수 있습니다. 이 항목 워크플로우는 스키마를 변경하고 저장된 데이터를 제거하는 필드나 컬렉션 삭제와는 다릅니다.

하나의 모델, 두 가지 관리 방법

관리자는 관리 패널의 콘텐츠 유형에서 컬렉션을 생성하고 편집할 수 있습니다. EmDash가 데이터베이스 스키마를 업데이트하고, 콘텐츠 편집기는 다음번에 컬렉션을 로드할 때 변경 사항을 사용합니다.

시드 파일은 JSON으로 시작 모델을 설명합니다. 템플릿은 설정 중에 컬렉션 및 기타 사이트 데이터를 생성하기 위해 시드를 사용합니다. 팀은 또한 버전 관리에 시드를 유지하고 다른 환경을 생성할 때 적용할 수 있습니다. 관리 패널과 시드는 별도의 모델을 생성하지 않습니다; 둘 다 대상 데이터베이스에 저장된 모델을 변경합니다.

다음 시드 프래그먼트는 게시물 예제의 네 가지 커스텀 필드를 정의합니다:

{
	"version": "1",
	"collections": [
		{
			"slug": "posts",
			"label": "Posts",
			"labelSingular": "Post",
			"fields": [
				{
					"slug": "title",
					"label": "Title",
					"type": "string",
					"required": true
				},
				{ "slug": "excerpt", "label": "Excerpt", "type": "text" },
				{ "slug": "content", "label": "Content", "type": "portableText" },
				{ "slug": "featured_image", "label": "Featured Image", "type": "image" }
			]
		}
	]
}

시드 파일 참조에서 충돌 처리와 설정, 택소노미, 메뉴, 위젯 영역, 리다이렉트, 샘플 콘텐츠를 포함하여 시드에 포함할 수 있는 다른 객체를 다룹니다.

기존 콘텐츠가 있는 모델 변경

컬렉션을 추가하면 새 항목을 위한 빈 공간이 생성됩니다. 선택적 필드를 추가하면 모든 항목에 해당 필드가 추가되지만, 편집자나 마이그레이션이 값을 제공할 때까지 기존 항목에는 값이 없습니다. 기본값은 필드가 추가될 때 초기 값을 제공할 수 있습니다.

레이블, 설명, 유효성 검사 규칙, 검색 설정, 필드 순서는 필드를 교체하지 않고 업데이트할 수 있습니다. 컬렉션 및 필드 슬러그는 안정적인 식별자입니다: 관리 패널은 생성 시 설정하고 이후 이름 변경을 제공하지 않습니다.

프로덕션에서 사용되는 모델을 변경하기 전에 배포된 사이트의 스키마 진화를 읽어보세요.

TypeScript 선언

EmDash는 데이터베이스의 모델에서 TypeScript 선언을 생성할 수 있습니다. 선언은 컬렉션 이름과 필드 형태를 공개 쿼리 함수에 추가하므로, posts 쿼리는 data.title, data.content 및 기타 필드가 TypeScript에 알려진 항목을 반환합니다.

로컬 개발 중에 Astro 통합은 emdash-env.d.ts를 작성하고 스키마 변경 후 새로 고칩니다. 파일은 생성된 출력입니다; 선언이 아닌 콘텐츠 모델을 편집하세요. 원격 워크플로우는 emdash types를 실행하여 선택한 EmDash 사이트에서 .emdash/types.ts를 작성할 수 있습니다. 표현하는 모델을 변경한 후 해당 파일을 재생성하세요.

생성된 타입은 코드가 현재 스키마와 일치하도록 도와주지만, 저장된 콘텐츠를 마이그레이션하지 않습니다. 모델 변경과 필요한 콘텐츠 마이그레이션은 별도의 작업으로 남습니다.

관련 개념

컬렉션 기능과 필드 선택은 컬렉션과 필드를 읽어보세요. 편집자 및 권한 모델은 관리 패널을 읽어보세요.