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

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

Добавьте Room Visualizer через расширение OpenCart 4 или пользовательскую тему и сопоставьте стабильный код товара витрины с каталогом ideal.house.

Статус проверки: Документация расширений OpenCart 4 проверена 7 сентября 2026 г. Тестовый магазин был недоступен. В OpenCart 3 и сторонних темах используются другие пути и правила работы с событиями; адаптируйте руководство к установленной основной версии.

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

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

Подготовьте тестовый магазин, доступ к разработке расширений/тем, Shop ID, Publishable Key и импортированные тестовые записи. Ядро OpenCart обычно предоставляет model в шаблонах товаров, тогда как SKU может потребовать работы с контроллерами/расширениями в зависимости от версии и темы. Выберите одно значение и используйте его последовательно в качестве ideal.house sku.

Не редактируйте исходные файлы каталога напрямую. Оформите изменения как расширение OpenCart 4 или храните их в собственной теме под контролем версий.

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

Код товара должен точно совпадать с импортированным ideal.house sku посимвольно.

Отрисовка контейнера товара#

Расширьте активный шаблон товара через ваше расширение. Если вы намеренно сопоставляете поле OpenCart model с ideal.house sku, поместите это рядом с действиями товара:

twig
{% if model %}
  <div class="idealhouse-host">
    <div
      data-idealhouse-button-container
      data-product-code="{{ model }}">
    </div>
  </div>
{% endif %}

Автоэкранирование Twig зависит от конфигурации окружения; убедитесь, что выбранное значение экранировано как атрибут HTML. Если вы выбираете реальное поле SKU, добавьте это очищенное значение в данные шаблона контроллера в вашем расширении и отрисуйте его вместо model.

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

Добавьте ресурс JavaScript витрины через механизм расширения/темы. Он должен создать один скрипт с необходимыми атрибутами:

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 = '<SHOP_ID>';
  script.dataset.publishableKey = '<PUBLISHABLE_KEY>';
  document.head.append(script);
}

Храните два публичных значения в конфигурации расширения и отрисовывайте их безопасно. Никогда не размещайте ideal.house Client Secret в JavaScript, Twig, журналах расширений или кэшированном HTML.

Опции, варианты и динамическая отрисовка#

Опции OpenCart не всегда соответствуют отдельным вариантам с собственным SKU. Если магазин использует расширение опций или вариантов, подключитесь к его документированному обратному вызову определения выбранного варианта и модели данных. Заменяйте внешний контейнер только после получения точного кода выбранного варианта:

js
function renderIdealhouseCode(host, productCode) {
  host.replaceChildren();
  const code = String(productCode || '').trim();
  if (!code) return;
  const container = document.createElement('div');
  container.dataset.idealhouseButtonContainer = '';
  container.dataset.productCode = code;
  host.append(container);
}

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

Импорт товаров#

Экспортируйте выбранное значение OpenCart model/SKU для каждого товара с поддержкой визуализации и сопоставьте его с sku в ideal.house. Используйте загрузку товаров, затем руководства по импорту товаров, статусу задачи, получению списка товаров, обновлению товаров, удалению товара и ошибкам и повторным попыткам.

Вызовы API администрирования OpenCart, запланированные экспорты, обработчики событий и вебхуки относятся к интеграции, которую реализует клиент.

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

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

Для удаления отключите/деинсталлируйте расширение или удалите переопределение и ресурс пользовательской темы, обновите модификации/события OpenCart, очистите кэши темы/CDN и убедитесь, что запрос SDK и контейнеры отсутствуют.

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