Ideal House
Passa al contenuto

Integrazione con PrestaShop#

Usa un piccolo modulo PrestaShop per caricare Room Visualizer e generare un pulsante dal riferimento del prodotto o della combinazione corrente.

Stato della verifica: documentazione di moduli, hook e risorse PrestaShop 8/9 esaminata il 7 settembre 2026. Non era disponibile un negozio di un commerciante. L'esempio usa hook documentati comuni a Classic e Hummingbird, ma i temi di terze parti possono spostarli o ometterli.

Prima di caricare SDK: apri Pannello di controllo → Impostazioni, aggiungi l’origine del negozio a Allowed Origins (CORS) e fai clic su Salva. Includi il nome host pubblicato e le origini di anteprima o preproduzione utilizzate; separa più origini con virgole. Consulta i passaggi di configurazione.

Prerequisiti e associazione#

Prepara un negozio di prova, l'accesso per sviluppare moduli, Shop ID, Publishable Key e SKUs importati. Decidi se il codice ideal.house proviene da reference del prodotto base o da reference della combinazione selezionata. Ogni combinazione visualizzabile deve avere un riferimento univoco e non vuoto.

Contratto minimo di 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>

Il Product Code deve corrispondere esattamente allo sku importato in ideal.house. Gli identificatori PrestaShop non sono intercambiabili con i riferimenti.

Crea un punto di inserimento del modulo#

Registra displayProductAdditionalInfo per inserire contenuti nelle pagine prodotto e actionFrontControllerSetMedia per caricare l'adattatore locale. Sia Classic sia Hummingbird documentano l'hook di visualizzazione nei modelli del prodotto e dell'anteprima rapida.

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)
    );
}

Nella funzione di richiamo dell'hook di visualizzazione, ottieni il prodotto presentato, scegli il suo riferimento, assegnalo a Smarty e genera un modello del modulo. Applica l'escape al valore nel modello:

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>

Non copiare il PHP abbreviato come modulo completo per la produzione: aggiungi i normali metadati del modulo, la compatibilità delle versioni, l'archiviazione della configurazione, i controlli dei permessi e la pulizia alla disinstallazione.

Caricare SDK una sola volta#

In adapter.js, crea l'elemento SDK esatto dopo aver letto i due valori pubblici dalla configurazione del negozio del modulo, opportunamente ripulita:

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);
}

Esponi idealhousePublicConfig con il meccanismo di definizione/configurazione JavaScript supportato da PrestaShop. Non esporre mai un Client Secret.

Cambiamenti di combinazione e pagine dinamiche#

Il ciclo di aggiornamento del prodotto nel tema e i moduli di combinazione di terze parti variano. Nel punto in cui il tema attivo ha determinato la combinazione selezionata, passa il relativo riferimento a questo collegamento gestito dal 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);
}

Non dedurre il riferimento dalle etichette visualizzate. L'anteprima rapida è inclusa nelle posizioni documentate degli hook, ma verifica che il tema attivo esegua effettivamente l'hook. Per i filtri AJAX o i frammenti di prodotto aggiornati, lascia che l'hook crei un nuovo contenitore oppure richiama il collegamento dopo la funzione di richiamo documentata del tema per l'aggiornamento.

Importare i dati dei prodotti#

Associa reference del prodotto/della combinazione PrestaShop a sku di ideal.house. Usa Caricamento dei prodotti e le guide su importazione, stato del processo, elenco, aggiornamenti, eliminazione ed errori e nuovi tentativi. Qualsiasi esportazione tramite PrestaShop Webservice, attività cron o sincronizzazione basata su hook è un'implementazione a carico del cliente.

Verificare e rimuovere#

Prova un prodotto semplice, ogni combinazione, riferimenti mancanti/duplicati, uno SKU sconosciuto a ideal.house, anteprima rapida, elenchi, navigazione a faccette, cronologia del browser, dispositivi mobili, contesti di vendita per lingua/valuta, consenso e cache di produzione. Verifica una sola richiesta SDK e l'uguaglianza esatta riferimento/SKU.

Disinstalla o disabilita il modulo, assicurati che i suoi hook/configurazione/risorse siano rimossi, svuota le cache di Smarty e del negozio e verifica l'assenza della URL di SDK e del codice data-idealhouse-*.

Riferimenti ufficiali della piattaforma#