Modelo de conteúdo

Nesta página

Um modelo de conteúdo descreve as informações que seu site armazena. No EmDash, o modelo é composto por coleções e campos. O banco de dados armazena esse modelo, e o painel de administração o usa para construir os formulários com os quais os editores trabalham.

Coleções, campos e entradas

Uma coleção é um tipo de conteúdo, como Publicações, Produtos ou Autores. Um campo é uma informação sobre esse conteúdo, como um título, corpo, preço ou referência de autor. Uma entrada é um item salvo em uma coleção.

Por exemplo, uma coleção de Publicações poderia ter estes campos:

Posts
├── Title          texto curto, obrigatório
├── Excerpt        texto longo, opcional
├── Content        texto rico, opcional
└── Featured image imagem, opcional

O EmDash também gerencia informações que toda entrada precisa, incluindo seu ID, slug público, estado de publicação, autor, tempos de criação e atualização, localidade e referências de revisão. Os resultados de consulta expõem essas informações padrão junto com os campos definidos para a coleção.

Excluir uma entrada a move para a lixeira definindo seu horário de exclusão. Um administrador pode restaurá-la até que alguém a exclua permanentemente da lixeira. Esse fluxo de trabalho de entradas é diferente de excluir um campo ou coleção, que altera o esquema e remove dados armazenados.

Um modelo, duas formas de gerenciar

Os administradores podem criar e editar coleções em Tipos de conteúdo no painel de administração. O EmDash atualiza o esquema do banco de dados, e o editor de conteúdo usa a alteração na próxima vez que carrega a coleção.

Um arquivo seed descreve um modelo inicial em JSON. Os templates usam seeds para criar coleções e outros dados do site durante a configuração. As equipes também podem manter um seed no controle de versão e aplicá-lo ao criar outro ambiente. O painel de administração e um seed não criam modelos separados; ambos alteram o modelo armazenado no banco de dados de destino.

O seguinte fragmento de seed define os quatro campos personalizados no exemplo de Publicações:

{
	"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" }
			]
		}
	]
}

A referência de arquivos seed cobre o tratamento de conflitos e os outros objetos que um seed pode conter, incluindo configurações, taxonomias, menus, áreas de widgets, redirecionamentos e conteúdo de exemplo.

Alterando um modelo com conteúdo existente

Adicionar uma coleção cria um espaço vazio para novas entradas. Adicionar um campo opcional adiciona esse campo a cada entrada, mas entradas existentes não têm valor até que um editor ou migração forneça um. Um valor padrão pode fornecer o valor inicial quando o campo é adicionado.

Rótulos, descrições, regras de validação, configurações de busca e ordem dos campos podem ser atualizados sem substituir o campo. Slugs de coleção e campo são identificadores estáveis: o painel de administração os define na criação e não oferece renomeação posterior.

Leia Evoluir o esquema de um site implantado antes de alterar um modelo usado em produção.

Declarações TypeScript

O EmDash pode gerar declarações TypeScript a partir do modelo no banco de dados. As declarações adicionam os nomes das suas coleções e formas de campos às funções de consulta públicas, para que uma consulta por posts retorne entradas cujos data.title, data.content e outros campos são conhecidos pelo TypeScript.

Durante o desenvolvimento local, a integração Astro escreve emdash-env.d.ts e o atualiza após mudanças de esquema. O arquivo é saída gerada; edite o modelo de conteúdo em vez da declaração. Fluxos de trabalho remotos podem executar emdash types para escrever .emdash/types.ts a partir do site EmDash selecionado. Regenere esse arquivo após alterar o modelo que ele representa.

Tipos gerados ajudam o código a corresponder ao esquema atual, mas não migram conteúdo armazenado. Uma mudança de modelo e qualquer migração de conteúdo necessária permanecem operações separadas.

Conceitos relacionados

Leia Coleções e campos para recursos de coleção e escolhas de campos. Leia Painel de administração para o modelo de editor e permissões.