Coleções e campos

Nesta página

Uma coleção define um tipo de conteúdo e o formulário que os editores usam para criá-lo. Os seus campos definem os valores que cada entrada pode conter. Por exemplo, uma coleção de Produtos pode conter um título, preço, descrição, imagem do produto e referência a uma entrada de Marca.

Os administradores gerenciam as coleções em Tipos de Conteúdo. Os arquivos seed podem definir as mesmas configurações de coleção quando um site ou ambiente é configurado a partir da configuração.

Identidade da coleção

Cada coleção tem uma etiqueta no plural, uma etiqueta no singular opcional e um slug. As etiquetas aparecem no painel de administração. O slug identifica a coleção em consultas, rotas de API, arquivos seed e no banco de dados.

Por exemplo, uma coleção etiquetada Publicações do Blog pode usar Publicação do Blog como sua etiqueta no singular e posts como seu slug. O código Astro a consulta então por esse slug:

import { getEmDashCollection } from "emdash";

const { entries: posts } = await getEmDashCollection("posts");

Escolha o slug antes de criar a coleção. O painel de administração não renomeia slugs de coleção ou slugs de campo mais tarde porque as consultas existentes e as colunas armazenadas dependem deles. Os slugs começam com uma letra minúscula, contêm apenas letras minúsculas, números e sublinhados, e têm um máximo de 63 caracteres. O EmDash também rejeita nomes reservados usados pelas suas próprias rotas e dados de entrada.

Comportamento da coleção

As configurações da coleção controlam como os editores e as páginas públicas usam as entradas:

  • Routable requer um slug público antes que uma entrada possa ser publicada. Um padrão de URL pode combinar o slug ou ID da entrada com a sua data de publicação para produzir o caminho público. Cada marcador de posição precisa do seu próprio segmento de caminho: /{year}/{month}/{slug}.html é válido, mas /{year}{month}/{slug} e /{slug}-{id} são rejeitados.
  • Drafts permite aos editores salvar o trabalho antes de publicá-lo.
  • Revisions mantém instantâneos do histórico de conteúdo.
  • Preview fornece URLs de pré-visualização assinadas para conteúdo não publicado.
  • Search ativa a pesquisa de texto completo para campos marcados como pesquisáveis.
  • SEO adiciona campos de metadados de título, descrição e imagem e inclui a coleção no mapa do site. Consulte Recursos de SEO integrados.
  • Edit locking mantém uma entrada enquanto um editor está trabalhando e recusa outros escritores até que o bloqueio seja liberado.
  • Comments podem ser ativados por coleção, com configurações de moderação e fechamento automático.
  • Icon indica o nome do ícone Phosphor exibido ao lado da coleção na barra lateral e na paleta de comandos, por exemplo calendar-blank; um nome que não é resolvido recorre ao ícone padrão.
  • Hide from navigation remove a entrada da barra lateral, o link da paleta de comandos e a ação rápida do painel, enquanto a coleção continua acessível por URL, API e plugins. Desativar Ação rápida no painel remove apenas a ação rápida, para coleções que plugins ou importações preenchem em vez de editores.
  • Group coloca a coleção numa pasta recolhível da barra lateral. As coleções com o mesmo grupo compartilham uma pasta, posicionada onde a primeira delas apareceria. Uma taxonomia se junta à pasta quando todas as coleções a que está atribuída são mostradas nessa pasta.

Ative o comportamento que o site realmente usa. Por exemplo, ativar Preview fornece URLs de pré-visualização, mas a página Astro ainda deve renderizar a entrada e o seu estado de pré-visualização corretamente. Consulte Modo de pré-visualização para esse fluxo completo.

Tipos de campo

Escolha um tipo de campo para o valor que os editores inserem e a forma como o código da aplicação o recebe. O EmDash suporta 17 tipos de campo:

Necessidade de conteúdoTipos de campoCom o que os editores trabalham
Texto curto ou longostring, text, slug, urlEntradas de texto, áreas de texto e valores de URL
Númerosnumber, integerEntradas decimais ou de números inteiros
Estado e tempoboolean, datetimeUm interruptor ou seletor de data e hora
Escolhas fixasselect, multiSelectUma ou várias escolhas de opções configuradas
Dados ricos ou estruturadosportableText, json, repeater, blocksTexto rico, JSON, grupos repetidos ou uma composição de blocos ordenada
Mídiaimage, fileUm item selecionado da biblioteca de mídia
RelaçõesreferenceUma entrada selecionada de outra coleção

O tipo é mais do que um controle de editor. Também determina como o EmDash armazena e valida o valor e como as declarações TypeScript geradas o descrevem. A referência de tipos de campo lista a forma de valor e as opções de cada tipo.

Regras de campo

Cada campo personalizado tem uma etiqueta e um slug. As seguintes opções descrevem mais o seu comportamento:

  • Required impede que uma entrada seja salva sem um valor.
  • Unique impede que duas entradas na coleção usem o mesmo valor.
  • Default value fornece um valor inicial quando apropriado.
  • Validation pode limitar o comprimento do texto, intervalos de números, padrões, escolhas, tipos de arquivo ou comprimento de repeater de acordo com o tipo de campo.
  • Searchable inclui campos de texto suportados no índice de pesquisa de texto completo da coleção.
  • Indexed cria um índice de banco de dados para ordenar ou filtrar por um campo suportado.
  • Translatable controla se cada locale tem o seu próprio valor. Um valor não traduzível é compartilhado entre traduções da mesma entrada.

Ative Indexed quando uma consulta ordena ou filtra por esse campo personalizado. O índice ajuda o banco de dados a encontrar entradas correspondentes ou ordenadas, mas usa armazenamento adicional e adiciona trabalho sempre que o conteúdo é criado ou atualizado. Não indexe um campo apenas porque uma página o exibe.

Os índices estão disponíveis para campos string, url, number, integer, boolean, datetime, select, reference e slug. Texto rico, JSON, repeaters e valores de escolha múltipla contêm dados mais complexos e não podem usar este tipo de índice.

Um campo de referência não armazena nada na própria tabela da coleção. Configure-o com a coleção de destino e permita vários valores apenas quando o campo deve vincular várias entradas. O EmDash mantém os vínculos separadamente e retorna as entradas vinculadas sob references em vez de em data, de modo que uma referência permite ao código carregar ou identificar conteúdo relacionado sem copiar a entrada de destino para a entrada de origem. Consulte reference para a forma armazenada e o comportamento de um campo sem coleção de destino, e Relações para o fluxo de trabalho em torno dele.

Alterar campos mais tarde

Etiquetas, validação, configurações de pesquisa, índices, opções de widget e ordem de exibição podem mudar sem substituir o campo. Adicionar um campo mantém cada entrada existente, embora essas entradas precisem de um valor para o novo campo se o site espera um.

A migração deve converter valores existentes, atualizar o modelo e manter o código de aplicação antigo e novo compatível durante a implantação. Siga Evoluir o esquema de um site implantado antes de fazer uma destas alterações.

Tarefas relacionadas

Use Trabalhar com conteúdo para criar e publicar entradas. Use Consultar conteúdo para filtrá-las e ordená-las. Leia Modelo de conteúdo para tipos gerados e arquivos seed.