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 gerem as coleções em Tipos de Conteúdo. Os ficheiros 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, ficheiros seed e a base 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 consulta-a 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.
  • Drafts permite aos editores guardar o trabalho antes de o publicar.
  • 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.
  • Edit locking mantém uma entrada enquanto um editor está a trabalhar e recusa outros escritores até que o bloqueio seja libertado.
  • Comments podem ser ativados por coleção, com configurações de moderação e fecho automático.
  • Group coloca a coleção numa pasta recolhível da barra lateral. As coleções com o mesmo grupo partilham uma pasta, posicionada onde a primeira delas apareceria. Uma taxonomia junta-se à 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 controlo 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 guardada 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 ficheiro 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 base de dados para ordenar ou filtrar por um campo suportado.
  • Translatable controla se cada configuração regional tem o seu próprio valor. Um valor não traduzível é partilhado entre traduções da mesma entrada.

Ative Indexed quando uma consulta ordena ou filtra por esse campo personalizado. O índice ajuda a base 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 as ligações separadamente e retorna as entradas vinculadas sob references em vez de em data, pelo 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 ficheiros seed.