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#
<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.
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:
<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:
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:
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-*.