Интеграция 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#
<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, поместите это рядом с действиями товара:
{% if model %}
<div class="idealhouse-host">
<div
data-idealhouse-button-container
data-product-code="{{ model }}">
</div>
</div>
{% endif %}
Автоэкранирование Twig зависит от конфигурации окружения; убедитесь, что выбранное значение экранировано как атрибут HTML. Если вы выбираете реальное поле SKU, добавьте это очищенное значение в данные шаблона контроллера в вашем расширении и отрисуйте его вместо model.
Загрузка SDK один раз#
Добавьте ресурс JavaScript витрины через механизм расширения/темы. Он должен создать один скрипт с необходимыми атрибутами:
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. Если магазин использует расширение опций или вариантов, подключитесь к его документированному обратному вызову определения выбранного варианта и модели данных. Заменяйте внешний контейнер только после получения точного кода выбранного варианта:
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 и контейнеры отсутствуют.