Ideal House
Pular para o conteúdo

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#

html
<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.

php
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:

smarty
<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:

js
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:

js
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.

Referências oficiais da plataforma#