Introdução
🎯 O que este módulo faz?
O módulo GeneralTypes permite que você recupere tipos de entidades em todo o sistema - tipos de página, tipos de formulário, tipos de bloco de produto e mais - que definem a estrutura e as categorias do seu conteúdo no OneEntry.
Pense nisso como seu sistema de classificação de conteúdo - O OneEntry usa tipos para organizar diferentes tipos de páginas (página inicial, post de blog, página de produto), formulários (contato, pesquisa), blocos (herói, galeria) e produtos (físicos, digitais), e este módulo permite que você busque todos os tipos disponíveis para construir interfaces dinâmicas.
📖 Explicação Simples
No OneEntry, cada entidade tem um tipo que determina seu propósito e estrutura:
- Tipos de Página:
homepage,blog_post,product_page,landing_page - Tipos de Formulário:
contact_form,survey,registration,feedback - Tipos de Bloco de Produto:
hero_section,image_gallery,text_block,video_embed - Tipos de Produto:
physical_product,digital_product,service,subscription
O módulo GeneralTypes fornece a lista completa de todos os tipos configurados no seu projeto OneEntry, para que você possa:
✅ Construir dropdowns dinâmicos - Permita que os admins escolham o tipo de página ao criar conteúdo
✅ Filtrar conteúdo - Mostre apenas páginas "blog_post" ou formulários "contact_form"
✅ Validar dados - Verifique se um tipo existe antes de criar uma entidade
✅ Criar lógica baseada em tipo - Exiba diferentes interfaces com base no tipo de página
Exemplo do mundo real:
Seu aplicativo de blog busca todos os tipos de página:
- "homepage" → Renderiza o slider de posts em destaque
- "blog_post" → Renderiza o layout do artigo com comentários
- "about_page" → Renderiza cartões de membros da equipe
- "contact_page" → Renderiza o formulário de contato
✨ Conceitos Chave
Hierarquia do Sistema de Tipos
O OneEntry organiza o conteúdo usando um sistema de tipos onde cada entidade pertence a uma categoria:
| Entidade | Exemplos de Tipos | Propósito |
|---|---|---|
| Páginas | homepage, blog_post, product_page, landing_page | Definir layouts e funcionalidades de página |
| Formulários | contact_form, survey, registration, feedback | Categorizar diferentes propósitos de formulário |
| Blocos de Produto | hero_section, gallery, text_block, video_embed | Blocos de construção para páginas de produto |
| Produtos | physical_product, digital_product, service, subscription | Classificar inventário de produtos |
Estrutura da Entidade Tipo
Cada tipo retornado por GeneralTypes.getAllTypes() tem esta estrutura:
interface GeneralTypeEntity {
id: number; // ID numérico único (ex: 1, 2, 3)
type: string; // Nome do tipo (ex: "blog_post", "contact_form")
}
Quando Usar GeneralTypes
| Caso de Uso | Por que GeneralTypes? |
|---|---|
| Construindo interface de admin do CMS | Preencher dropdowns com tipos disponíveis |
| Criando filtros de tipo | Permitir que os usuários filtrem conteúdo por tipo (posts de blog vs. páginas de destino) |
| Validando criação de entidade | Verificar se um tipo existe antes de criar uma página/formulário |
| Roteamento dinâmico | Roteamento de diferentes tipos de página para diferentes componentes |
| Permissões baseadas em tipo | Permitir que diferentes funções acessem diferentes tipos de conteúdo |
📋 O que você precisa saber
Tipos são configurados no Painel de Admin do OneEntry
Você não cria tipos via SDK - os tipos são definidos no seu painel de admin do OneEntry quando você configura seu projeto. O módulo GeneralTypes apenas recupera a lista de tipos existentes.
Como os tipos são criados:
Painel de Admin do OneEntry → Configurações → Tipos de Conteúdo → Adicionar Tipo de Página → "blog_post"
Uma vez criados, você pode buscá-los.
Tipos vs. Marcadores vs. IDs
Distinção importante:
| Identificador | O que é | Exemplo | Melhor para |
|---|---|---|---|
| Tipo | Categoria/classificação da entidade | "blog_post" | Filtragem e agrupamento |
| Marcador | Identificador único legível por humanos | "my_about_page" | Buscando entidades específicas |
| ID | Identificador numérico do banco de dados | 42 | Uso interno do sistema |
getAllTypes() retorna TODOS os tipos em todas as entidades
O método retorna uma lista combinada de tipos de:
- Páginas
- Formulários
- Blocos de Produto
- Produtos
- Qualquer outra entidade no seu projeto OneEntry
Não há filtragem embutida por categoria de entidade, então você precisará filtrar manualmente:
Tipos são sensíveis a maiúsculas e minúsculas
Sempre use correspondência exata de maiúsculas e minúsculas ao trabalhar com tipos.
Use tipos para renderização de conteúdo dinâmico
Os tipos permitem conteúdo polimórfico - lógica de renderização diferente com base no tipo:
📊 Tabela de Referência Rápida
| Método | Descrição | Caso de Uso |
|---|---|---|
| getAllTypes() | Recupera todos os tipos gerais no sistema | Preencher dropdowns, validar tipos |
Estrutura de GeneralTypeEntity:
{
id: number; // ID numérico único
type: string; // Nome do tipo (ex: "blog_post")
}
❓ Perguntas Frequentes (FAQ)
Como eu crio novos tipos?
Você não pode criar tipos via SDK. Os tipos são criados no Painel de Admin do OneEntry:
1. Faça login no Painel de Admin do OneEntry
2. Vá para Configurações → Tipos de Conteúdo
3. Clique em "Adicionar Tipo de Página" (ou Tipo de Formulário, Tipo de Produto, etc.)
4. Insira o nome do tipo: "blog_post"
5. Salve
Agora busque via SDK:
const types = await GeneralTypes.getAllTypes();
// Retorna: [{ id: 1, type: "blog_post" }, ...]
Como eu filtro tipos por entidade (páginas, formulários, produtos)?
O método getAllTypes() retorna todos os tipos em todas as entidades. Você precisa filtrar manualmente.
Posso atualizar ou excluir tipos via SDK?
Não. O módulo GeneralTypes é somente leitura. Toda a gestão de tipos acontece no Painel de Admin do OneEntry.
Qual é a diferença entre ID de tipo e nome de tipo?
Quando usar cada um:
| Campo | Uso Para | Exemplo |
|---|---|---|
id | Referências internas do sistema | Relações de banco de dados |
type | Sua lógica de código e comparações | if (page.type === 'blog_post') |
Melhor prática: Sempre use a string type no seu código, não o número id (IDs podem mudar entre ambientes).
Posso armazenar em cache a lista de tipos?
Sim! Os tipos raramente mudam, então o armazenamento em cache é recomendado.
Como eu lido com tipos ausentes de forma elegante?
Sempre valide se um tipo existe antes de usá-lo.
Posso usar tipos para autorização/permissões?
Sim! Você pode implementar controle de acesso baseado em tipo.
💡 Notas Importantes
⚠️ Tipos são Específicos do Projeto
Os tipos são configurados no seu painel de admin do OneEntry e variam entre projetos. Não existem tipos "padrão" universais - sempre busque a lista dinamicamente:
// ❌ Não codifique tipos
const pageTypes = ['homepage', 'blog_post', 'product_page'];
// ✅ Busque tipos dinamicamente
const allTypes = await GeneralTypes.getAllTypes();
const pageTypes = allTypes.filter(t => t.type.endsWith('_page'));
🔒 Módulo Somente Leitura
O módulo GeneralTypes apenas lê tipos. Toda a criação, modificação e exclusão de tipos acontece no Painel de Admin do OneEntry.
🎓 Melhores Práticas
- Busque tipos dinamicamente - Não codifique listas de tipos
- Armazene tipos em cache - Eles raramente mudam, armazene para desempenho
- Use strings de tipo, não IDs - Nomes de tipos são estáveis entre ambientes
- Valide a existência de tipos - Verifique se um tipo é válido antes de usar
- Use convenções de nomenclatura - Nomenclatura consistente facilita a filtragem
- Implemente renderização de fallback - Lide com tipos desconhecidos de forma elegante
- Documente seus tipos - Mantenha uma lista de tipos e seus propósitos
- Use TypeScript para segurança de tipo - Aproveite a interface
GeneralTypeEntity
Definição do módulo GeneralTypes
O módulo GeneralTypes na Plataforma OneEntry é projetado para gerenciar e recuperar tipos gerais usados dentro do sistema. Usando a função defineOneEntry, você pode criar um objeto GeneralTypes para interagir com esses tipos. O método principal disponível é getAllTypes, que recupera todos os objetos do tipo GeneralTypeEntity da API. Este método retorna uma Promise que resolve para um array de objetos GeneralTypeEntity, cada um contendo um id e um type. Os tipos cobrem vários propósitos, como layouts de página, formulários, blocos de produto e mais, proporcionando flexibilidade para diferentes necessidades de gerenciamento de conteúdo.
const { GeneralTypes } = defineOneEntry( "sua-url-do-projeto", { "token": "seu-token-de-aplicativo" });