Ideal House
Перейти к содержанию

Интеграция PrestaShop#

Используйте небольшой модуль PrestaShop, чтобы загрузить Room Visualizer и создать кнопку по артикулу текущего товара или комбинации.

Статус проверки: Документация PrestaShop 8/9 по модулям, хукам и ресурсам проверена 7 сентября 2026 г. Магазин продавца был недоступен. Пример использует документированные хуки, общие для Classic и Hummingbird, но сторонние темы могут перемещать или не выводить их.

Перед загрузкой SDK: Откройте Панель управления → Настройки, добавьте источник вашего интернет-магазина в Allowed Origins (CORS) и нажмите Сохранить. Укажите опубликованное имя хоста, а также источники используемых сред предпросмотра и тестирования; разделяйте несколько источников запятыми. См. инструкцию по настройке.

Предварительные требования и сопоставление#

Подготовьте тестовый магазин, доступ к разработке модуля, Shop ID, Publishable Key и импортированные SKU. Определите, берётся ли код ideal.house из поля reference базового товара или поля reference выбранной комбинации. Каждая комбинация, поддерживающая визуализацию, должна иметь уникальный непустой артикул.

Минимальные требования для подключения 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>

Код товара должен точно совпадать с sku, импортированным в ideal.house. Идентификаторы PrestaShop и артикулы не взаимозаменяемы.

Создайте точку вставки модуля#

Зарегистрируйте displayProductAdditionalInfo для размещения контента на страницах товаров и actionFrontControllerSetMedia для загрузки вашего локального адаптера. Оба Classic и Hummingbird документируют хук отображения в шаблонах товаров и быстрого просмотра.

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

В обработчике хука отображения получите данные выводимого товара, выберите его артикул, передайте его в Smarty и сформируйте шаблон модуля. Экранируйте значение в этом шаблоне:

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>

Не используйте сокращённый пример PHP как готовый модуль для рабочего магазина: добавьте стандартные метаданные модуля, совместимость версий, хранение настроек, проверки прав доступа и очистку при удалении.

Загрузите SDK один раз#

В adapter.js создайте точный элемент SDK после чтения двух публичных значений из санитизированной конфигурации витрины вашего модуля:

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

Предоставьте idealhousePublicConfig через поддерживаемый PrestaShop механизм объявления или настройки JavaScript. Никогда не раскрывайте Client Secret.

Изменения комбинаций и динамические страницы#

Жизненный цикл обновления товара зависит от темы и сторонних модулей комбинаций. В том месте, где активная тема уже определила выбранную комбинацию, передайте её артикул в эту связующую функцию, реализуемую клиентом:

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

Не определяйте артикул по отображаемым подписям. Документированные места вызова хука включают быстрый просмотр, но убедитесь, что активная тема действительно выводит этот хук. Для AJAX-фильтров и обновлённых фрагментов товара создавайте новый внешний контейнер через хук или вызывайте связующую функцию после документированного обработчика обновления темы.

Импорт данных товаров#

Сопоставьте reference товара или комбинации PrestaShop с sku в ideal.house. Используйте загрузку товаров и руководства по импорту, статусу задачи, получению списка, обновлению, удалению и ошибкам и повторным попыткам. Экспорт через веб-службу PrestaShop, задания cron и синхронизацию на основе хуков клиент реализует самостоятельно.

Проверка и удаление#

Проверьте простой товар, каждую комбинацию, отсутствующие и повторяющиеся артикулы, неизвестный SKU ideal.house, быстрый просмотр, списки, фасетную навигацию, историю браузера, мобильную версию, разные языки и валюты продаж, согласие и кеширование рабочего сайта. Убедитесь, что SDK запрашивается один раз, а артикул точно совпадает с SKU.

Удалите или отключите модуль, убедитесь, что его хуки/конфигурация/ресурсы удалены, очистите кэши Smarty и витрины и убедитесь, что разметка SDK URL и data-idealhouse-* отсутствует.

Официальные ссылки платформы#