Introdução
No Odoo, os modelos definem como os dados são estruturados e armazenados no banco de dados. Cada pedaço de dados empresariais com o qual você trabalha vive em um modelo.
Compreender os modelos do Odoo é essencial tanto para desenvolvedores quanto para consultores funcionais. Os modelos são a base da arquitetura de dados do Odoo. Eles definem os campos do Odoo, relacionamentos e lógica de negócios.
Este artigo foca no modelo website.page. Ele alimenta páginas estáticas no seu site Odoo. Quer você esteja construindo páginas de destino personalizadas, gerenciando conteúdo ou integrando com sistemas externos, você trabalhará com este modelo.
O que é o modelo website.page
O modelo website.page representa páginas de websites estáticos no Odoo. Faz parte da aplicação Website e armazena páginas que você cria manualmente, como Sobre Nós, Contato ou páginas de destino personalizadas.
Este modelo no Odoo utiliza a herança de modelos do Odoo. Ele herda de ir.ui.view através do mecanismo _inherits. Cada registro website.page está ligado a um ir.ui.view que contém o template QWeb (arch) e metadados.
Páginas dinâmicas, como a loja ou a lista de blogs, são geradas de forma diferente.
Elas não são armazenadas como registros website.page. O modelo website.page é especificamente para conteúdo estático que você cria e edita através do construtor de websites.
Campos-chave no Modelo
Aqui estão os campos mais importantes do Odoo no modelo website.page. Compreender estes ajudará você a trabalhar de forma eficaz com páginas de websites.
1. nome
Tipo: Char. Este campo armazena o título da página. Ele é exibido na aba do navegador, nos menus e nos resultados de busca. Ele vem do ir.ui.view vinculado.
2. url
Tipo: Char. O caminho da URL da página. Deve começar com uma barra. Exemplos: /contactus, /about-us. Este é o caminho que os visitantes usam para acessar a página.
3. view_id
Tipo: Many2one (ir.ui.view). Obrigatório. Liga-se à visualização QWeb que contém o conteúdo da página. A visualização contém o arch (template XML) e a chave. Deletar a visualização cascata para a página.
4. website_id
Tipo: Many2one (website). O website ao qual esta página pertence. Em configurações de múltiplos websites, as páginas podem ser específicas para um website ou compartilhadas (quando vazias).
5. está_publicado
Tipo: Booleano. Se a página é visível para os visitantes. Páginas não publicadas retornam 404 ou redirecionam. Use isso para ocultar páginas sem deletá-las.
6. website_indexado
Tipo: Booleano. Controla se os motores de busca podem indexar a página. Defina como Falso para páginas de agradecimento ou páginas internas que você não deseja nos resultados de busca.
7. data_publicar
Tipo: Datetime. A data de publicação. Usada para publicação agendada e para exibir quando o conteúdo foi ao ar.
8. cabeçalho_visível
Tipo: Booleano. Se deve mostrar o cabeçalho do website nesta página. Útil para páginas de destino ou experiências em tela cheia onde você deseja ocultar o cabeçalho.
9. rodapé_visível
Tipo: Booleano. Se deve mostrar o rodapé do website. Assim como cabeçalho_visível, isso permite que você crie páginas sem o rodapé padrão.
10. é_página_inicial
Tipo: Booleano. Campo calculado. Verdadeiro quando esta página está definida como a página inicial do site. Apenas uma página por site pode ser a página inicial.
11. visível
Tipo: Booleano. Calculado. Indica se a página está visível com base no status de publicação, data e regras de visibilidade.
12. ids_menu
Tipo: One2many (website.menu). Os itens de menu que ligam a esta página. Uma página pode aparecer em vários menus ou em nenhum.
13. data_criação
Tipo: Datetime. Quando o registro foi criado. Gerido automaticamente pelo Odoo. Útil para auditoria e relatórios.
14. data_modificação
Tipo: Datetime. Quando o registro foi modificado pela última vez. Também gerido automaticamente. Ajuda a rastrear atualizações de conteúdo.
15. arquivamento
Tipo: Texto. O template QWeb XML. Armazenado na ir.ui.view vinculada. Contém a estrutura HTML e os snippets do Odoo. Editável via o construtor de sites.
16. chave
Tipo: Char. Identificador único para a vista. Usado no XML do módulo e para herança. O formato é geralmente module.view_name.
17. tipo
Tipo: Seleção. O tipo de vista. Para páginas da web, isto é sempre qweb. Outros tipos incluem formulário, lista e árvore.
18. ativo
Tipo: Booleano. Sinalizador de exclusão suave. Quando Falso, o registro é arquivado. Vem de ir.ui.view. Páginas arquivadas não são servidas.
19. website_meta_title
Tipo: Char. Título meta SEO. Substitui o título padrão nos resultados de pesquisa. Importante para a visibilidade SEO.
20. website_meta_description
Tipo: Texto. Descrição meta SEO. O trecho mostrado nos resultados dos motores de busca. Mantenha entre 150 e 160 caracteres para melhor exibição.
21. website_meta_keywords
Tipo: Char. Palavras-chave meta. Menos importantes para o SEO moderno, mas ainda usadas por alguns sistemas. Separadas por vírgulas.
22. header_overlay
Tipo: Booleano. Se o cabeçalho sobrepõe o conteúdo. Usado para páginas de estilo herói onde o cabeçalho fica em cima do banner.
23. header_color
Tipo: Seleção. Esquema de cores do cabeçalho. Opções como transparente, claro ou escuro. Afeta o contraste e a legibilidade.
24. visibility
Tipo: Seleção. Controle de acesso. As opções incluem Público, Conectado, Grupo Restrito ou Com Senha. Controla quem pode visualizar a página.
25. redirect_type
Tipo: Seleção. Quando a URL muda, isso define o redirecionamento: 301 permanente, 302 temporário ou nenhum. Importante para SEO ao mover páginas.
Como Este Modelo É Usado em Fluxos de Trabalho Empresariais
1. Páginas de Destino e Campanhas
As equipes de marketing criam páginas de destino para campanhas. Cada página é um registro website.page. Elas controlam a URL, o conteúdo e a data de publicação. A publicação agendada usa date_publish.
2. Páginas Corporativas
Sobre Nós, Contato, Termos de Serviço e Política de Privacidade são tipicamente registros website.page. Elas são criadas uma vez e atualizadas conforme necessário. A colocação no menu é gerida através de menu_ids.
3. Páginas de Agradecimento e Confirmação
Páginas como "Formulário de contacto enviado" ou "Tarefa recebida" são registos de website.page. Defina website_indexed como Falso para que não apareçam nos resultados de pesquisa.
4. Multi-Website e Localização
Em configurações de multi-website, website_id determina qual site mostra a página. Você pode duplicar páginas por website com conteúdo localizado.
5. Conteúdo Restrito e Acesso Restrito
O campo de visibilidade permite criar páginas apenas para utilizadores autenticados ou para grupos específicos. Útil para áreas de membros ou documentação interna.
Como os Desenvolvedores Estendem Este Modelo
Os desenvolvedores estendem website.page usando vários padrões. A herança de modelo do Odoo é o principal mecanismo.
Herança de Modelo
Use _inherit = 'website.page' para estender o modelo. Adicione novos campos do Odoo, sobreponha métodos ou adicione restrições. O modelo herdado no Odoo mantém suas alterações em um módulo separado para atualizações fáceis.
Adicionando Campos
Defina novos campos do Odoo no seu modelo herdado. Use o tipo de campo correto: Char, Many2one, Boolean, Integer, Text, Selection. Considere campos dependentes do website para multi-website.
Extensões Python
Sobreponha create, write ou unlink para adicionar lógica. Use super() para chamar o original. Tenha cuidado com a relação view_id e o comportamento de cascata.
Odoo Studio
Odoo Studio permite personalizar páginas sem código. Bom para alterações rápidas de layout. Para lógica complexa ou conteúdo impulsionado por API, módulos personalizados são mais fáceis de manter.
Melhores Práticas
- Use slugs amigáveis para URL. Evite espaços e caracteres especiais. Use hífens para legibilidade.
- Defina website_indexed como Falso para páginas de agradecimento, páginas de confirmação e páginas internas.
- Ao alterar URLs, ative o redirecionamento (301 ou 302) para preservar o valor de SEO e evitar links quebrados.
- Preencha website_meta_title e website_meta_description para cada página pública. Isso melhora a visibilidade de SEO.
- Ao criar páginas via API ou XML-RPC, crie primeiro o ir.ui.view, depois a website.page com view_id. Certifique-se de que a visualização tenha tipo qweb e uma chave única.
Erros Comuns
- Criando uma website.page sem um view_id válido. A visualização deve existir e ter tipo qweb.
- Usando URLs que não começam com uma barra. Odoo espera caminhos como /contactus, não contactus.
- Esquecendo de definir website_indexed em páginas de agradecimento. Elas acabam nos resultados de busca e podem diluir o SEO.
- Alterando a URL de uma página sem configurar um redirecionamento. Links antigos quebram e os motores de busca perdem a conexão.
- Modificando o arch de uma visualização que foi editada no construtor de sites. A flag noupdate em ir.model.data pode impedir que suas alterações XML sejam aplicadas. Redefina-a se necessário.
Conclusão
O modelo website.page é central para a gestão de páginas estáticas no Odoo. Ele armazena metadados da página, URLs e configurações de publicação. O conteúdo real reside na ir.ui.view vinculada.
Compreender seus campos e como ele herda de ir.ui.view ajudará você a configurar, personalizar e integrar websites Odoo de forma eficaz. Seja você um consultor funcional ou um desenvolvedor, um sólido entendimento de website.page economizará tempo e evitará erros.
Precisa de Ajuda com a Sua Implementação do Odoo?
A Dasolo ajuda empresas a implementar, personalizar e otimizar o Odoo. Especializamo-nos em integrações de API e desenvolvimento Odoo. Nossa equipe tem ampla experiência com a arquitetura de dados do Odoo e modelos como website.page.
Se você precisar de ajuda com sua implementação do Odoo, páginas de websites personalizadas ou integrações, estamos aqui para ajudar. Agende uma demonstração para discutir seu projeto.