Introdução
Gerencie páginas do site e telas de aplicativos móveis com conteúdo dinâmico.
Mais informações sobre a interface do usuário do módulo https://doc.oneentry.cloud/docs/category/pages
🎯 O que este módulo faz?
O módulo Pages permite que você recupere e gerencie páginas (para websites) ou telas (para aplicativos móveis) com todo o seu conteúdo - título, conteúdo HTML/texto simples, visibilidade e atributos personalizados. Você cria páginas no painel de administração do OneEntry e as busca dinamicamente em seu aplicativo, de modo que a alteração de conteúdo na administração entra em vigor sem necessidade de reimplantação.
🚀 Início Rápido
Inicialize o módulo a partir de defineOneEntry:
const { Pages } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
Recupere uma única página pela sua URL (marcador) e leia seus campos:
// Fetch the "about" page in English.
const page = await Pages.getPageByUrl("about", "en_US");
console.log(page.id, page.localizeInfos.title);
console.log("Visible:", page.isVisible);
// Custom fields you defined live in attributeValues.
console.log(page.attributeValues);
A maioria dos métodos de leitura segue a mesma estrutura: um identificador (url ou id) mais um langCode. Veja a Tabela de Referência Rápida abaixo para o conjunto completo.
✨ Conceitos Chave
O que é uma Página?
Uma página é uma entidade de conteúdo que representa:
- Web: Uma página no seu site (por exemplo,
/sobre,/contato) - Móvel: Uma tela no seu aplicativo (por exemplo, Tela de Perfil, Tela de Configurações)
Cada página contém:
- Conteúdo - título e conteúdo HTML/texto simples via
localizeInfos - URL -
pageUrl, o marcador da página usado para roteamento e buscas - Visibilidade - a flag
isVisible - Atributos personalizados - quaisquer campos adicionais que você definir em
attributeValues(meta SEO é modelado como atributos personalizados, não como um campo embutido) - Localização - conteúdo multilíngue
Tipos de Página
O OneEntry suporta diferentes tipos de página (type), sendo os mais comuns:
| Tipo | Valor de type | Uso Exemplo |
|---|---|---|
| Página Comum | common_page | Sobre, Contato, Termos |
| Página de Catálogo | catalog_page | Categorias de catálogo |
| Página Externa | external_page | Links para URLs externas |
| Página de Erro | error_page | Página 404 / Não Encontrada |
A lista completa de tipos está disponível através do módulo GeneralTypes.
Hierarquia de Páginas
As páginas são organizadas em uma árvore através de parentId (páginas de nível superior têm parentId: null):
📁 Company
├─ About Us
├─ Team
└─ Careers
📁 Products
├─ Product Category 1
│ ├─ Product A
│ └─ Product B
└─ Product Category 2
Você pode buscar páginas raiz com getRootPages() e descer com getChildPagesByParentUrl().
📋 O que você precisa saber
Duas maneiras de identificar páginas
| Método | Quando usar | Exemplo |
|---|---|---|
| Por URL | O usuário visita uma página específica | getPageByUrl("sobre") |
| Por ID | Referências internas | getPageById(123) |
Melhor prática: o pageUrl é um marcador estável - não é um caminho de rota do Next.js. Passe o marcador do OneEntry (por exemplo, "sobre"), não /pt/sobre.
Estrutura da Página
Cada página possui estes campos principais:
{
"id": 9,
"parentId": 8,
"pageUrl": "blog1",
"depth": 1,
"localizeInfos": {
"title": "Blog 1",
"menuTitle": "Blog 1",
"htmlContent": "",
"plainContent": ""
},
"isVisible": true,
"blocks": [],
"type": "common_page",
"templateIdentifier": null,
"attributeSetIdentifier": null,
"attributeValues": {},
"isSync": false
}
Localização
As páginas suportam múltiplas línguas - solicite um langCode diferente para obter a mesma página em outro idioma.
Atributos Personalizados
Adicione quaisquer campos às páginas usando AttributesSets - autor/data/tags de postagens de blog, imagens de destaque de landing pages, meta SEO, e assim por diante. Leia-os de page.attributeValues. Saiba mais: Módulo AttributesSets.
Visibilidade
Use a flag isVisible para controlar quais páginas são mostradas aos usuários - filtre por isVisible: true em produção.
📊 Tabela de Referência Rápida - Métodos Comuns
| Método | O que faz | Quando usar |
|---|---|---|
| getPages() | Obtém todas as páginas | Construir sitemap, listar todas as páginas |
| getRootPages() | Obtém todas as páginas de nível superior (raiz) | Construir navegação de nível superior |
| getChildPagesByParentUrl() | Obtém páginas filhas por URL pai | Navegar pela subárvore de uma seção |
| getBlocksByPageUrl() | Obtém objetos PositionBlock para uma página por URL | Renderizar blocos de conteúdo da página |
| getConfigPageByUrl() | Obtém configurações para uma página por URL | Ler configurações de exibição por página |
| getPageById() | Obtém uma única página por ID | Referências internas |
| getPageByUrl() | Obtém uma única página por URL | Renderizar uma página em uma rota |
| searchPage() | Pesquisa rápida por páginas | Pesquisar páginas por título |
❓ Perguntas Comuns (FAQ)
Qual é a diferença entre URL e ID?
pageUrl- o marcador da página usado para roteamento (por exemplo,"sobre"). Voltado para o usuário e estável entre ambientes.id- o identificador numérico. Usado para referências internas.
Como faço para construir a navegação a partir das páginas?
Use getRootPages() para entradas de nível superior e getChildPagesByParentUrl() para descer na árvore, ou use o módulo Menus dedicado para estruturas de navegação gerenciadas.
Como faço para adicionar metadados de SEO a uma página?
SEO não é um campo embutido - modele o título/meta descrição/etc. como atributos personalizados em um AttributesSet, e então leia-os de page.attributeValues.
🎓 Melhores Práticas
- Use
pageUrl(o marcador) para roteamento - nunca codifique um caminho de rota de framework como a URL. - Filtre por
isVisible: truepara produção. - Armazene em cache as páginas para reduzir chamadas à API; trate 404s (página não encontrada) de forma elegante.
- Leia dados personalizados de
attributeValuesem vez de assumir campos embutidos.
🔗 Documentação Relacionada
- Módulo Products - Gerencie produtos de e-commerce
- Módulo Blocks - Blocos de conteúdo reutilizáveis para páginas
- Módulo AttributesSets - Campos personalizados para páginas
- Módulo Menus - Gerenciamento de menus de navegação
- Módulo GeneralTypes - Tipos de página