Como usar o sistema de sobrescrita do PrestaShop sem comprometer o núcleo do sistema.

O sistema de sobrescrita do PrestaShop permite personalizar o comportamento principal sem alterar os arquivos originais. No entanto, usado de forma descuidada, ele cria lojas frágeis que quebram após atualizações. Este guia da Knowband aborda como as sobrescritas funcionam, quando usá-las e três armadilhas críticas que todo desenvolvedor deve conhecer.

O que é o sistema de sobreposição?

O PrestaShop utiliza herança PHP para permitir que você substitua qualquer classe principal por sua própria versão, sem alterar as originais. Cada classe principal recebe o sufixo “Core”, por exemplo, `ProductCore`. Se você criar o arquivo `/override/classes/Product.php` com uma classe chamada `Product` que estende `ProductCore`, o PrestaShop carregará sua versão. O mesmo se aplica aos controladores.

Substitua apenas os métodos específicos que você precisa alterar; nunca copie um arquivo de classe inteiro. Isso mantém sua substituição enxuta e muito menos propensa a conflitos com atualizações futuras.

Por exemplo, expondo o nome do controlador atual no seu modelo de cabeçalho:

Onde colocar seus arquivos de sobreposição

As configurações personalizadas podem estar em dois locais. O diretório global `/override/` na raiz da sua instalação fica ativo imediatamente após a limpeza do cache. A melhor abordagem é agrupar as configurações personalizadas dentro de um módulo.

Colocar um arquivo de sobrescrita dentro de um módulo (por exemplo, /modules/mymodule/override/classes/Product.php) faz com que o PrestaShop o copie para /override/ durante a instalação e o remova completamente durante a desinstalação. Esta é a abordagem recomendada.

Um exemplo rápido de sobrescrita de classe. Digamos que você queira expor o nome do controlador atual no seu modelo de cabeçalho:

// /override/classes/controllers/FrontController.php

classe FrontController estende FrontControllerCore {

    função pública initHeader() {

        self::$smarty->assign('currentController', get_class($this));

        retornar parent::initHeader();

    }}

Sempre chame o método pai, a menos que tenha um motivo específico para não fazê-lo. Ignorá-lo quebrará silenciosamente a funcionalidade principal.

Sobrescrita de classes e controladores de módulos

A partir do PrestaShop 1.6, você também pode sobrescrever classes de módulos. Adicione “Override” ao nome da classe (por exemplo, BlockUserInfoOverride estendendo BlockUserInfo) e coloque-a em /override/modules/. O mesmo padrão se aplica aos controladores de módulos. Após qualquer sobrescrita, limpe o cache, especificamente exclua o arquivo /cache/class_index.php, ou as alterações não terão efeito.

Quando NÃO usar substituições

As sobrescritas são exclusivas — só pode existir uma por classe. Elas também são proibidas em módulos do marketplace e devem ser reservadas para personalizações privadas da loja. Antes de recorrer a uma sobrescrita, considere uma destas alternativas:

  • Ganchos: O PrestaShop dispara eventos de gancho (hook events) em todos os carregamentos de página — você pode acessá-los a partir de um módulo para executar código personalizado ou inserir conteúdo na página sem precisar mexer em nenhuma classe principal.
  • Sobrescritas de serviço do Symfony: Partes do PrestaShop que foram migradas para o Symfony oferecem um caminho mais limpo através do contêiner de serviços. Você decora ou substitui um serviço em vez de modificar a própria classe.
  • Modelo de objeto personalizado: Precisa adicionar campos a uma entidade principal? Crie seu próprio ObjectModel com sua própria tabela em vez de modificar a existente.

Protegendo as configurações personalizadas por meio de atualizações

As atualizações do PrestaShop podem alterar silenciosamente as assinaturas dos métodos, deixando seu código sobrescrito com base em premissas desatualizadas. Trate cada código sobrescrito como algo a ser revisado após cada atualização. Comente o que você alterou e por quê, verifique o changelog e mantenha o código sobrescrito o menor possível. Um código sobrescrito conciso e bem comentado que chama os métodos da classe pai corretamente sobrevive às atualizações. Uma cópia completa da classe é um bug prestes a ser descoberto.

O cache “fantasma”: por que sua sobrescrita parece invisível

O principal motivo pelo qual os desenvolvedores acreditam que suas configurações personalizadas estão com problemas: o PrestaShop não verifica o diretório `/override/` a cada requisição. Ele compila um mapa de classes em `/cache/class_index.php`, e até que esse arquivo seja excluído e regenerado, sua configuração personalizada permanece invisível, independentemente da correção do código. Limpar o cache do Smarty não é suficiente. Exclua o arquivo `class_index.php` manualmente via FTP/SSH, através de Parâmetros Avançados > Desempenho no painel administrativo ou pelo console do Symfony.

Figura 1: O fluxo do sistema de sobrescrita do PrestaShop e a função de /cache/class_index.php.

 

O Muro do Symfony: Substituições Legadas Não Funcionam com Controladores Modernos

Este sistema PHP legado funciona apenas na camada ObjectModel mais antiga do PrestaShop. A partir da versão 1.7, áreas importantes do painel administrativo, incluindo as novas telas de Página de Produto e Pedido, foram reescritas em Symfony. O sistema de sobrescrita do PHP não afeta esses controladores do Symfony. Para esses, use Decoração de serviço, encapsulando ou substituindo um serviço através do arquivo services.yml do seu módulo. Se uma sobrescrita não tiver efeito mesmo após limpar o arquivo class_index.php, é provável que o controlador tenha sido migrado para o Symfony.

Resolução de Conflitos: Quando Dois Módulos Desejam a Mesma Classe

Quando dois módulos sobrescrevem a mesma classe, o PrestaShop gera um erro na segunda instalação e deixa a sobrescrita inativa. A solução é manual: abra ambos os arquivos, combine todos os métodos em um único arquivo `/override/` que estenda a classe `Core`, e então exclua o arquivo `class_index.php`. Adicione comentários identificando qual módulo contribuiu com cada método. É por isso que sobrescritas são proibidas em módulos de marketplaces; conflitos se tornam problema do lojista. Se estiver desenvolvendo para terceiros, use hooks.

Figura 2: Como surgem conflitos de sobrescrita quando dois módulos têm como alvo a mesma classe e a resolução manual da mesclagem.

Sobre a Knowband

A Knowband é uma fornecedora confiável de plugins e extensões para e-commerce, com anos de experiência ajudando lojistas online a criar lojas mais rápidas, inteligentes e repletas de recursos. Seja qual for a plataforma em que sua loja opera — a Knowband, por exemplo —, oferece soluções completas e inovadoras para lojas virtuais. PrestaShop, OpenCartShopify, WooCommerce, MagentoSeja para o Google Play ou qualquer outra plataforma importante, a Knowband oferece uma ampla gama de plugins e extensões prontos para uso que ajudam a aprimorar a funcionalidade, melhorar o desempenho e proporcionar uma melhor experiência de compra, sem a necessidade de desenvolver tudo do zero.

Novidades no PrestaShop 9.0? Guia completo de recursos e migração

Por que PrestaShop?

O PrestaShop é uma plataforma líder de e-commerce de código aberto, conhecida por sua flexibilidade, recursos poderosos e custo zero de licenciamento. Reconhecido por sua interface intuitiva, suporte a vários idiomas/moedas e rico ecossistema de módulos e temas, é ideal para PMEs que criam lojas online personalizadas. O PrestaShop 9.0 representa um marco significativo, oferecendo melhorias de desempenho e avanços arquitetônicos essenciais que refletem padrões modernos de desenvolvimento, escalabilidade e manutenibilidade a longo prazo.

O que há de novo no PrestaShop 9.0?

O PrestaShop 9.0 traz uma modernização completa da estrutura principal — um grande avanço, redefinindo como desenvolvedores e proprietários de lojas interagem com o sistema.

Mudanças na arquitetura principal

Integração completa com Symfony: O PrestaShop 9 finaliza sua transição para o framework Symfony, fornecendo uma base moderna e estável para desenvolvimento futuro. Classes legadas e controladores obsoletos foram descontinuados ou substituídos, tornando o sistema mais sustentável e alinhado às melhores práticas.

Suporte PHP 8.1+: Requer PHP 8.1 ou superior, garantindo compatibilidade com os recursos mais recentes, segurança aprimorada e desempenho mais rápido.

Doutrina DBAL: A Camada de Abstração do Banco de Dados melhora as interações do banco de dados, oferecendo melhor abstração, criação de consultas e testabilidade, especialmente benéfica para personalizações em larga escala.

Desenvolvimento Centrado no Compositor: O Composer 2.x agora desempenha um papel central no fluxo de trabalho de desenvolvimento, lidando com gerenciamento de dependências, integração de módulos e carregamento automático sem problemas. Isso simplifica o controle de versão e melhora a compatibilidade de CI/CD.

Melhorias no Back Office e no Desenvolvedor

Ao se concentrarem em melhorias de backend, comerciantes e desenvolvedores notarão:

  • Carregamentos de página mais rápidos e tempos de resposta do servidor aprimorados
  • Base de código mais limpa por meio da remoção da lógica legada
  • Modularidade aprimorada para módulos autônomos e mais limpos
  • Cobertura de teste mais forte para lançamentos estáveis ​​e seguros

Embora as mudanças na interface do usuário sejam mínimas, essas atualizações internas melhoram drasticamente a estabilidade e a manutenção da loja.

Guia de Migração: Do ​​PrestaShop 8 para o 9

Método 1: Atualização com um clique (recomendado)

Ferramentas Disponíveis:

  • Módulo de atualização oficial com 1 clique: módulo de atualização padrão do PrestaShop que lida com transições de versão automaticamente
  • MigrationPro: solução de terceiros que oferece suporte à migração com transferência abrangente de dados
  • PrestaShop Migrator: solução alternativa de um clique para atualizações contínuas

Vantagens:

  • Processo automatizado com intervenção manual mínima
  • Verificações de integridade de dados integradas
  • Risco reduzido de erro humano
  • Tempo de migração mais rápido
  • Criação automatizada de backup

Processo de backup de atualização automática:

  1. BackupInitialization: início do processo, limpeza de arquivos temporários restantes
  2. BackupFiles: backup completo de arquivos de loja, temas, módulos, imagens e código personalizado
  3. BackupDatabase: Cria um backup completo de todo o banco de dados, incluindo todas as tabelas e dados armazenados.
  4. Avise-me se você prefere uma versão mais concisa ou mais detalhada.
  5. BackupComplete: Finalização do processo com verificação

Processo de reversão: Se a atualização encontrar problemas, reverta facilmente através da seção “Reversão” do módulo de atualização automática, selecionando o arquivo de backup e monitorando o progresso da reversão.

Migração de dados: Gerencia automaticamente a transferência de produtos, categorias, atributos, contas de clientes, histórico de pedidos, páginas do CMS, definições de configuração, imagens e configurações de módulos compatíveis.

Método 2: Migração manual (demorado)

Nova instalação do PrestaShop 9 seguida de migração manual de dados.

Visão geral do processo:

  1. Revisar requisitos do servidor: PHP 8.1+, MySQL 5.7+/MariaDB 10.3+, Composer 2.x, Apache/Nginx
  2. Backup completo: Banco de dados, arquivos, configuração, código personalizado
  3. Instalar o PrestaShop 9.0: Instalação nova via Git e Composer
  4. Estratégia de Migração de Dados: Exportar do PS8 (produtos, clientes, pedidos, CMS, configurações) e importar para o PS9 usando ferramentas nativas, módulos de terceiros ou entrada manual
  5. Avaliação de compatibilidade de módulos: Auditar módulos existentes, atualizar os compatíveis, identificar alternativas para módulos incompatíveis
  6. Reconstrução Temática: Reconstruir temas usando a arquitetura atualizada do PS9, adaptar aos requisitos do Symfony
  7. Teste Abrangente: Funcionalidade de front office (navegação, checkout, pagamentos, celular) e back office (gerenciamento de produtos, pedidos, relatórios)

Recomendação

Método 1 (atualização com um clique) é altamente recomendado para a maioria dos comerciantes devido a:

  • Tempo de migração significativamente reduzido
  • Menor risco de perda/corrupção de dados
  • Manipulação automatizada de relacionamentos de dados complexos
  • Recursos de reversão integrados
  • Disponibilidade de suporte profissional

Considere o Método 2 (Migração Manual) apenas para requisitos específicos de personalização que exijam uma nova instalação ou quando ferramentas automatizadas forem incompatíveis.

Lista de verificação pós-migração

Independentemente do método escolhido:

  • Verifique todas as funções críticas da loja
  • Teste integrações de pagamento e envio
  • Confirme as configurações de SEO e as estruturas de URL
  • Atualize os certificados DNS e SSL, se necessário
  • Monitore o desempenho do site e as velocidades de carregamento
  • Treinar a equipe sobre mudanças de interface

Considerações Finais

O PrestaShop 9.0 define um forte caminho rumo a maior velocidade, segurança aprimorada e um ecossistema mais centrado no desenvolvedor. Embora a atualização exija planejamento e esforço, os benefícios a longo prazo são consideráveis: melhor desempenho, código mais limpo, escalabilidade aprimorada e ferramentas modernas.

Se estiver usando uma versão mais antiga, avalie o valor a longo prazo de migrar para o PrestaShop 9. Se não tiver certeza sobre o processo ou não tiver desenvolvedores internos, é altamente recomendável consultar um especialista ou parceiro certificado do PrestaShop.

Ainda está decidindo se deve mudar?

Se você não tem certeza se migrar do PrestaShop 8 para o 9 é o passo certo para sua loja, convidamos você a conferir nossa comparação detalhada e os insights de especialistas.

Descubra os principais benefícios, riscos potenciais e impacto real da migração — e tome uma decisão informada para o seu negócio.

Explore o guia de comparação entre PrestaShop 8 e 9