Modelagem de Conteúdo
Como criar Content Types e Entries úteis para consumir no seu site.
Content Types definem a estrutura do conteúdo. Entries são os conteúdos criados a partir dessa estrutura.
Exemplo: Posts
Crie um Content Type chamado Posts com estes campos:
[
{ "name": "title", "type": "text", "required": true },
{ "name": "slug", "type": "slug", "required": true },
{ "name": "excerpt", "type": "textarea" },
{ "name": "cover", "type": "image" },
{ "name": "body", "type": "markdown", "required": true },
{ "name": "publishedAt", "type": "date" }
]Depois crie entries com dados reais:
{
"title": "Meu primeiro post",
"slug": "meu-primeiro-post",
"excerpt": "Resumo curto para listagens.",
"cover": "https://example.com/cover.jpg",
"body": "# Conteúdo em Markdown",
"publishedAt": "2026-06-22"
}Tipos de campo
| Tipo | Use para |
|---|---|
text | Texto curto, título, nome, categoria. |
textarea | Resumos e textos médios. |
markdown | Corpo de post, páginas longas e descrições ricas. |
slug | URL amigável, como meu-post. |
image | URL de imagem. |
file | URL de arquivo. |
url | Links externos. |
date | Datas no formato YYYY-MM-DD. |
boolean | Flags como destaque/ativo. |
select | Valor escolhido entre opções. |
repeatable | Lista de valores. |
relation | Referência a outra entry. |
Boas práticas
- Use nomes de campo em inglês e sem espaços:
title,slug,body,cover. - Sempre inclua um campo
slugquando o conteúdo tiver página própria no site. - Use
markdownpara texto longo que precisa de formatação. - Use
imageefilepara guardar URLs vindas da área de Mídia. - Marque como
requiredapenas o que realmente impede publicação. - Evite renomear campos que já são usados pelo frontend.
Status editorial
| Status | Quando usar |
|---|---|
draft | Conteúdo em rascunho. |
review | Conteúdo aguardando revisão. |
approved | Conteúdo aprovado, mas ainda não publicado. |
published | Conteúdo disponível na API pública. |
archived | Conteúdo antigo ou removido do uso. |
Somente entries published aparecem na API pública.
Relações
Use relation quando uma entry precisa apontar para outra.
Exemplo: um projeto aponta para uma experiência:
{
"name": "Projeto X",
"experience": "experiencia-principal"
}Na importação JSON, use o slug da entry relacionada. No admin, escolha a relação pelo campo correspondente.