Integracja PrestaShop#
Użyj małego modułu PrestaShop, aby załadować Room Visualizer i wyrenderować przycisk z bieżącego produktu lub referencji kombinacji.
Status weryfikacji: Dokumentacja modułu, hooków i zasobów PrestaShop 8/9 sprawdzona 7 września 2026. Brak dostępnego sklepu handlowca. Przykład używa udokumentowanych hooków wspólnych dla Classic i Hummingbird, ale motywy stron trzecich mogą je przenosić lub pomijać.
Przed załadowaniem SDK: Otwórz Panel → Ustawienia, dodaj adres źródłowy witryny sklepu do Allowed Origins (CORS) i kliknij Zapisz. Uwzględnij rzeczywistą nazwę hosta opublikowanego sklepu oraz używane adresy podglądu i środowisk testowych; wiele adresów oddzielaj przecinkami. Zobacz instrukcję konfiguracji.
Wymagania wstępne i mapowanie#
Przygotuj sklep testowy, dostęp do rozwoju modułu, Shop ID, Publishable Key oraz zaimportowane SKUs. Zdecyduj, czy kod ideal.house pochodzi z referencji produktu bazowego reference, czy z referencji wybranej kombinacji reference. Każda wizualizowalna kombinacja powinna mieć unikalną, niepustą referencję.
Minimalna umowa 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>
Kod produktu musi dokładnie odpowiadać zaimportowanemu ideal.house sku. Identyfikatory PrestaShop nie są zamienne z kodami referencyjnymi produktów.
Utwórz punkt wstawienia modułu#
Zarejestruj displayProductAdditionalInfo, aby umieścić treści na stronach produktów, oraz actionFrontControllerSetMedia, aby załadować swój lokalny adapter. Zarówno Classic, jak i Hummingbird dokumentują hook wyświetlania w szablonach produktów i podglądu szybkiego.
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)
);
}
W wywołaniu zwrotnym hooka wyświetlania pobierz prezentowany produkt, wybierz jego referencję, przypisz ją do Smarty i wyrenderuj szablon modułu. Zabezpiecz wartość w tym szablonie:
<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>
Nie kopiuj skróconego PHP jako kompletnego modułu produkcyjnego: dodaj zwykłe metadane modułu, kompatybilność wersji, przechowywanie konfiguracji, sprawdzanie uprawnień i sprzątanie po odinstalowaniu.
Załaduj SDK tylko raz#
W adapter.js utwórz wskazany element SDK po odczytaniu dwóch publicznych wartości z oczyszczonej z niebezpiecznych danych konfiguracji witryny sklepu udostępnianej przez moduł:
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);
}
Eksponuj idealhousePublicConfig za pomocą wspieranego przez PrestaShop mechanizmu definiowania/konfiguracji JavaScript. Nigdy nie eksponuj Client Secret.
Zmiany kombinacji i strony dynamiczne#
Cykl życia odświeżania produktów motywu i moduły kombinacji stron trzecich różnią się. W punkcie, w którym aktywny motyw rozwiązał wybraną kombinację, przekaż jej referencję do tego mostu klienta:
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);
}
Nie zgaduj na podstawie wyświetlanych etykiet. Podgląd szybki jest uwzględniony w udokumentowanych lokalizacjach hooków, ale zweryfikuj, czy aktywny motyw faktycznie renderuje hook. Dla filtrów AJAX lub odświeżanych fragmentów produktów pozwól hookowi utworzyć nowego hosta lub wywołać most po udokumentowanym wywołaniu zwrotnym aktualizacji motywu.
Import danych produktów#
Zmapuj produkt/kombinację PrestaShop reference do ideal.house sku. Użyj Przesyłanie produktów oraz przewodników dla import, status zadania, wyświetlanie listy, aktualizacje, usuwanie i błędy i ponowienia. Wyjście Webservice PrestaShop, cron lub synchronizacja oparta na hookach to implementacja klienta.
Weryfikacja i usunięcie#
Przetestuj prosty produkt, każdą kombinację, brakujące/zduplikowane referencje, nieznany ideal.house SKU, podgląd szybki, listy, nawigację fasetową, historię przeglądarki, mobilny, konteksty sprzedaży języka/waluty, zgodę i cache produkcyjne. Potwierdź jedno żądanie SDK i dokładną równość referencji/SKU.
Odinstaluj lub dezaktywuj moduł, upewnij się, że jego hooki/konfiguracja/zasoby zostały usunięte, wyczyść cache Smarty i witryny sklepu oraz zweryfikuj, że znacznik SDK URL i data-idealhouse-* jest nieobecny.