Integração com PrestaShop#
Use um módulo pequeno do PrestaShop para carregar o Room Visualizer e renderizar um botão a partir da referência atual do produto ou combinação.
Status de verificação: Documentação de módulo, hook e ativos da PrestaShop 8/9 revisada em 7 de setembro de 2026. Nenhuma loja de comerciante estava disponível. O exemplo usa hooks documentados comuns ao Classic e Hummingbird, mas temas de terceiros podem movê-los ou omiti-los.
Antes de carregar o SDK: abra Dashboard → Settings, adicione a origem do storefront ao Allowed Origins (CORS) e clique em Save. Inclua o hostname publicado e quaisquer origens de preview ou staging que você use; separe várias origens com vírgulas. Consulte Etapas de configuração.
Pré-requisitos e mapeamento#
Prepare uma loja de staging, acesso a desenvolvimento de módulos, Shop ID, Publishable Key e SKUs importados. Decida se o código do ideal.house provém do reference do produto base ou do reference da combinação selecionada. Cada combinação visualizável deve ter uma referência única e não vazia.
Contrato mínimo do SDK#
<script
src="https://sdk.ideal.house/sdk.js"
data-shop-id="<SHOP_ID>"
data-publishable-key="<PUBLISHABLE_KEY>"
async
></script>
<div data-idealhouse-button-container data-product-code="CHAIR-OAK-01"></div>
O Product Code deve corresponder exatamente ao sku importado do ideal.house. IDs do PrestaShop não são intercambiáveis com referências.
Criar um ponto de inserção de módulo#
Registre displayProductAdditionalInfo para posicionar conteúdo em páginas de produto e actionFrontControllerSetMedia para carregar seu adapter local. Tanto o Classic quanto o Hummingbird documentam o display hook nos templates de produto e quick-view.
public function install()
{
return parent::install()
&& $this->registerHook('displayProductAdditionalInfo')
&& $this->registerHook('actionFrontControllerSetMedia');
}
public function hookActionFrontControllerSetMedia($params)
{
$this->context->controller->registerJavascript(
'module-' . $this->name . '-adapter',
'modules/' . $this->name . '/views/js/adapter.js',
array('position' => 'bottom', 'priority' => 200)
);
}
No callback do display hook, obtenha o produto apresentado, escolha sua referência, atribua-a ao Smarty e renderize um template do módulo. Escape o valor nesse template:
<div class="idealhouse-host">
{if $idealhouse_product_code}
<div
data-idealhouse-button-container
data-product-code="{$idealhouse_product_code|escape:'html':'UTF-8'}">
</div>
{/if}
</div>
Não copie o PHP abreviado como um módulo completo de produção: adicione metadados normais do módulo, compatibilidade de versão, armazenamento de configuração, verificações de permissão e limpeza de desinstalação.
Carregar o SDK uma vez#
No adapter.js, crie o elemento SDK exato após ler os dois valores públicos da configuração de storefront sanitizada do seu módulo:
if (!document.querySelector('script[src="https://sdk.ideal.house/sdk.js"]')) {
const script = document.createElement('script');
script.src = 'https://sdk.ideal.house/sdk.js';
script.async = true;
script.dataset.shopId = window.idealhousePublicConfig.shopId;
script.dataset.publishableKey = window.idealhousePublicConfig.publishableKey;
document.head.append(script);
}
Exponha o idealhousePublicConfig com o mecanismo de definição/configuração de JavaScript suportado pelo PrestaShop. Nunca exponha um Client Secret.
Alterações de combinação e páginas dinâmicas#
O ciclo de vida de atualização de produto do tema e os módulos de combinação de terceiros variam. No momento em que o tema ativo resolver a combinação selecionada, passe sua referência para esta ponte do cliente:
function renderIdealhouseCombination(host, reference) {
host.replaceChildren();
const code = String(reference || '').trim();
if (!code) return;
const container = document.createElement('div');
container.dataset.idealhouseButtonContainer = '';
container.dataset.productCode = code;
host.append(container);
}
Não adivinhe a partir de rótulos exibidos. Quick view está incluído nos locais de hook documentados, mas verifique se o tema ativo realmente renderiza o hook. Para filtros AJAX ou fragmentos de produto atualizados, deixe o hook criar um novo host ou invocar a ponte após o callback de atualização documentado pelo tema.
Importar dados de produto#
Mapeie o reference de produto/combinação do PrestaShop para o sku do ideal.house. Use Envio de produtos e os guias para Importação, Status da tarefa, Listagem, Atualizações, Exclusão e Erros e novas tentativas. Qualquer exportação do Webservice do PrestaShop, cron ou sincronização baseada em hook é implementação do cliente.
Verificar e remover#
Teste um produto simples, cada combinação, referências ausentes/duplicadas, um SKU ideal.house desconhecido, quick view, listagens, navegação facetada, histórico do navegador, mobile, contextos de vendas por idioma/moeda, consentimento e cache de produção. Confirme uma solicitação de SDK e exata igualdade entre reference/SKU.
Desinstale ou desabilite o módulo, certifique-se de que seus hooks/configurações/assets sejam removidos, limpe caches do Smarty e storefront, e verifique se a URL de SDK e a marcação data-idealhouse-* estão ausentes.