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údo | Tipos de campo | Com o que os editores trabalham |
|---|---|---|
| Texto curto ou longo | string, text, slug, url | Entradas de texto, áreas de texto e valores de URL |
| Números | number, integer | Entradas decimais ou de números inteiros |
| Estado e tempo | boolean, datetime | Um interruptor ou seletor de data e hora |
| Escolhas fixas | select, multiSelect | Uma ou várias escolhas de opções configuradas |
| Dados ricos ou estruturados | portableText, json, repeater, blocks | Texto rico, JSON, grupos repetidos ou uma composição de blocos ordenada |
| Média | image, file | Um item selecionado da biblioteca de média |
| Relações | reference | Uma 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.