Hide Price Pro - Inicie sessão para ver o preço, ocultar preços B2B e grossista por visitante, país ou produto
Oculte os preços a quem não os deve ver e mostre no seu lugar um convite para iniciar sessão ou o seu próprio texto. Escolha uma só regra — visitantes sem sessão iniciada, países selecionados ou produtos selecionados — e o preço é removido do lado do servidor, antes de a página ser construída, pelo que nunca chega ao HTML. Nas listagens desaparece também o botão de adicionar ao carrinho, e os produtos restritos são retirados do carrinho no servidor, de modo que um link de compra forjado não serve de nada. Não se toca em nenhum ficheiro do núcleo, template do tema ou override. Pensado para B2B, venda grossista e venda por orçamento. Para PrestaShop 1.7 – 9.
Para lojas onde o preço não é para toda a gente
Tabelas de preços grossistas que não quer que a concorrência leia. Um catálogo que vende nuns países mas não noutros. Produtos que são orçamentados em vez de listados. Nos três casos a resposta é a mesma: mostre o produto, oculte o número e dê ao visitante um motivo para entrar em contacto ou iniciar sessão.
Uma só regra, escolhida de propósito
A página de configuração oferece exatamente uma escolha, e não uma pilha de interruptores que podem contradizer-se uns aos outros:
- Nobody - the module is paused (Ninguém — o módulo está em pausa), e nada é ocultado.
- Visitors who are not signed in (visitantes sem sessão iniciada) — os visitantes não registados perdem o preço em todo o catálogo.
- Selected countries (países selecionados) — os visitantes dos países que escolher perdem o preço; todos os outros continuam a vê-lo.
- Selected products (produtos selecionados) — todos perdem o preço, mas apenas nos produtos que marcar, e em mais lado nenhum.
As versões anteriores tinham três interruptores independentes e guardar uma combinação inválida simplesmente falhava. Tornar isto uma escolha única e exclusiva significa que já nem sequer é possível criar uma configuração impossível — e a opção Nobody faz com que pausar o módulo nunca exija desinstalá-lo. Se abrir o separador Modules de um produto enquanto está ativa outra regra, o módulo avisa-o com clareza de que as suas opções por produto não têm qualquer efeito nesse momento, em vez de o deixar configurar algo que, em silêncio, não faz nada.
O preço é removido antes de a página existir
Esta é a parte que interessa. No PrestaShop 1.7.5 e superior o módulo liga-se aos hooks actionPresentProduct e actionPresentProductListing e reescreve o produto do lado do servidor: show_price desativado, cadeias de preço esvaziadas, URL de adicionar ao carrinho removido. O preço nunca chega ao HTML, pelo que não fica no código à espera de ser encontrado no código-fonte da página.
A ocultação abrange todos os sítios onde aparece um preço: páginas de categoria, resultados de pesquisa, widgets da página inicial — produtos em destaque, mais vendidos, novidades, promoções —, a vista rápida e a própria página de produto. Nas páginas de listagem o botão de adicionar ao carrinho desaparece com ele. Uma pequena camada de JavaScript trata das miniaturas das listagens e remove defensivamente o código de preço que um tema pouco habitual ainda possa gerar, mas é uma segunda linha de defesa e não o mecanismo principal.
Não se pode contornar comprando
Ocultar um preço vale pouco se alguém ainda conseguir colocar o produto no carrinho. Em cada gravação do carrinho, e novamente nas páginas de carrinho e de finalização da encomenda, os produtos restritos são removidos do lado do servidor — por isso um link de adicionar ao carrinho feito à mão não leva a lado nenhum.
Se não for possível determinar o país do visitante, este é tratado como restrito. A regra falha do lado seguro: nunca deixa escapar um preço só porque a geolocalização era incerta.
As janelas de vista rápida são cobertas sem lhes tocar
Os módulos de vista rápida apresentam os preços através dos seus próprios controladores AJAX, que é exatamente onde este tipo de mascaramento costuma falhar. Esses pedidos são intercetados no momento do despacho e a apresentação de preços do módulo é forçada a desligar-se em memória, apenas para aquele pedido — os seus ficheiros e as suas definições na base de dados nunca são modificados. Um MutationObserver limpa as janelas injetadas e coloca lá dentro a sua mensagem de substituição, e a health check (verificação de estado) enumera os módulos de vista rápida que detetou na sua loja.
O que o visitante vê em vez do preço
Para as regras de visitante e de país: uma mensagem multilingue escrita por si, opcionalmente com um botão automático Sign in (Iniciar sessão) que devolve o visitante ao produto que estava a ver depois de este iniciar sessão.
Para a regra de produto: um campo Content displayed instead of the price (Conteúdo apresentado em vez do preço) por produto e por idioma, onde é permitido HTML — "Peça um orçamento", um número de telefone, um link de contacto, o que melhor lhe servir — ou nada, se o deixar vazio. Ao lado dele, um seletor por produto decide o essencial: No — sell normally (Não — vender normalmente) ou Yes — hide the price (Sim — ocultar o preço).
Uma verificação de estado que responde às perguntas antes de as fazer
A página de configuração inclui uma health check (verificação de estado) que se mantém calada quando está tudo bem e fala quando não está. Numa loja saudável limita-se a quatro linhas: confirma a Active rule (regra ativa), quantos Flagged products (produtos marcados) existem, quais os Quick view modules (módulos de vista rápida) cobertos e que não ficaram Files from old module versions (ficheiros de versões antigas do módulo) por aí.
O resto aparece apenas quando se aplica: um aviso se a regra de país estiver ativa mas a geolocalização do PrestaShop estiver desativada — com um link direto para a ligar, porque sem ela a regra não consegue distinguir visitantes; uma nota se o modo catálogo já estiver a ocultar todos os preços em toda a loja e a mascarar o efeito do módulo; uma nota se o seu PrestaShop for anterior à 1.7.5; e um botão Repair now (Reparar agora) se forem detetados restos da versão 1.x. Ninguém o obriga a percorrer uma parede de vistos verdes para encontrar a única coisa que importa.
A versão 2 eliminou um risco de segurança e uma montanha de cirurgia ao núcleo
A versão 1.x instalava-se substituindo ficheiros do núcleo — uma cópia de ProductListingFrontController para cada versão do PrestaShop, além de templates do tema classic e overrides de classe de ps_featuredproducts, ps_bestsellers, ps_newproducts, ps_specials e ProductController. Cada atualização do PrestaShop era, por isso, uma hipótese de acabar com uma página em branco.
A versão 2.0 é uma reescrita completa que usa apenas hooks. Nenhum ficheiro do núcleo, nenhum template do tema, nenhum override. As atualizações do PrestaShop não a podem partir, porque não há nada dela dentro do PrestaShop que se possa partir.
Também eliminou os ecrãs de importação e exportação em massa por CSV, que corriam como scripts autónomos sem qualquer autenticação — um buraco de segurança real e não teórico. Se precisar de marcar produtos em massa, está prevista uma versão baseada num controlador de administração protegido.
Atualizar a partir da 1.x limpa o que a versão antiga deixou
Substitua a pasta e abra a página Configure do módulo: ele deteta a atualização pendente e migra-se a si próprio no lugar, mantendo a sua lista de países e os textos por produto. Converte os três interruptores antigos na regra única, repõe o controlador do núcleo e os templates do tema que a 1.x tinha substituído a partir das cópias de segurança que deixou, apaga os overrides de classe que sobraram, regenera o índice de classes e limpa a cache de templates. Tudo o que não possa ser reposto automaticamente é listado pela health check com um botão Repair now.
Duas notas práticas: não use o botão Upgrade do Module Manager (Gestor de módulos), que só funciona com módulos vindos do Addons e devolve "Could not perform action upgrade for module undefined" para um módulo atualizado em disco — o caminho de atualização é abrir a página Configure. E nunca use Reset, que apaga a configuração.
Compatibilidade
PrestaShop da 1.7 à 9, em oito idiomas: alemão, espanhol, francês, inglês, italiano, neerlandês, polaco e turco. Mascaramento de preços totalmente do lado do servidor a partir da 1.7.5; nas 1.7.0–1.7.4 os hooks do apresentador de produto não existem, pelo que a ocultação recai apenas sobre a camada CSS e JavaScript — a health check diz-lhe se a sua loja é afetada. Os dados por produto sobrevivem às edições rápidas, às atualizações de stock e às gravações por serviço web, e as linhas são eliminadas automaticamente quando um produto é apagado.
Perguntas frequentes
Um visitante insistente consegue mesmo assim encontrar o preço no código-fonte da página?
Não, não na 1.7.5 e superior. O preço é removido do lado do servidor antes de o HTML ser construído, por isso não fica nada no código-fonte para encontrar.
Alguém pode adicionar ao carrinho um produto oculto com um link direto?
Não. Os produtos restritos são removidos do carrinho do lado do servidor em cada gravação do carrinho e novamente nas páginas de carrinho e de finalização da encomenda.
Posso ocultar os preços apenas aos visitantes sem sessão e deixar que os clientes os vejam?
Sim — é a regra visitors who are not signed in, e pode mostrar um botão Sign in que os devolve ao produto depois de iniciarem sessão.
O que acontece se não for possível saber em que país está um visitante?
É tratado como restrito. A regra falha do lado seguro em vez de arriscar deixar escapar um preço. Note que a regra de país precisa da geolocalização do PrestaShop ativada; a health check avisa-o e liga diretamente à definição.
Vai deixar de funcionar quando eu atualizar o PrestaShop?
Não. A versão 2 não toca em nenhum ficheiro do núcleo, template do tema ou override — funciona inteiramente através de hooks, por isso não há nada dentro do PrestaShop que uma atualização possa partir.
Funciona com as janelas de vista rápida?
Sim. Esses pedidos AJAX são intercetados e a apresentação de preços é forçada a desligar-se em memória apenas para aquele pedido; os ficheiros e as definições do próprio módulo de vista rápida nunca são alterados.
Estou a atualizar a partir da 1.x — o que tenho de limpar?
Nada à mão. Abra a página Configure e o módulo migra-se sozinho, repõe os ficheiros do núcleo que a 1.x substituiu e remove os overrides que deixou. Use a página Configure em vez do botão Upgrade do Module Manager, e nunca use Reset.
Os meus preços estão ocultos em todo o lado e eu não estava à espera disso. Verifique se o modo catálogo do próprio PrestaShop está ligado — oculta todos os preços em toda a loja, independentemente deste módulo. A health check assinala-o quando se aplica. E se quiser parar o módulo sem o desinstalar, coloque a regra em Nobody.
-
CompatibilidadePrestashop 1.7
Prestashop 8
Prestashop 9 -
Traduções Disponíveis do MóduloAlemão
Espanhol
Francês
Inglês
Italiano
Neerlandês
Polonês
Turco
MEG Venture
4 other products in the same category
| Versão | 2.0.2 |
|---|---|
| Última atualização | 2026-07-30 |
| Registo de alterações | - [2026-07-30] Backfill missing translation keys for multiple languages in the Hide Price Pro module - [2026-07-24] Add Polish and Turkish translations for Hide Price Pro module settings and messages - [2026-07-23] Bump version to 2.0.2 and update changelog to document upgrade fix for module stability - [2026-07-23] Translate module strings in Turkish for Hide Price Pro, updating messages related to pricing visibility, settings, and user prompts to enhance clarity for Turkish-speaking users. - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Add missing translation files (fr, de, pl, nl, tr, it, es) - [2026-07-09] fix: Update README and PHP display name for consistency in module title - [2026-07-09] feat: Add Hide Price Pro module with configuration and front-end functionality - [2026-06-21] feat: Add custom price handling to ProductListingFrontController - [2023-10-02] Update customprice.php - [2023-09-17] v1.5.5 - [2023-09-05] v1.5.3 - [2022-09-27] upgrades for the productlistingfront controller - [2022-05-22] v1.5.2 - [2022-02-19] v1.5.2 - [2021-07-22] v1.5.1 - [2021-02-21] Custom price field save fix - [2020-10-19] First release of v1.5.0 - [2020-10-19] Initial commit |
Comentários (2)
Não é possível enviar a apreciação da sua avaliação.
Denunciar comentário
Denúncia enviada
O seu relatório não pode ser enviado