В этом документе можно найти информацию о том, как Wizart Web Visualizer позволяет открывать и визуализировать конкретный продукт(SKU).
Важно! Ознакомьтесь с Wizart Web Visualizer: интеграция перед тем как перейти к интеграции ниже.
someVendorCode
- уникальный код или идентификатор, который соответствует связанному продукту, существующему в PIM (Product Information Management) system.
В исходном файле необходимой страницы добавьте требуемый код в теге <body>
, как указано в листинге ниже.
<body> ... <button id="wizart-spec-fitting-room-button" onClick="openSpecificFittingRoom('someVendorCode')"> Fitting room Specific Article </button> <object id="wizart-fitting-room-object" role="dialog" aria-label="Wizart Fitting Room." type="text/html" > </object> <style> #wizart-fitting-room-object { z-index: 2147483647 !important; display: none; position: fixed !important; top: 0 !important; left: 0 !important; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.8); } #wizart-fitting-room-object.active { display: block; } </style> <script src="./wizart-integration.js"></script> </body
Используя следующий листинг ниже, обновите js-файл с именем wizart-integration.js:, либо создайте и загрузите его к существующим исходным файлам клиентского веб-приложения, если такой отсутствует.
// todo get api token from Wizart. const api_token = 'CLIENT_SPECIFIC_API_TOKEN'; const server_address = 'https://pim-client.wizart.tech'; // bba (back button action) param is used to add back button to wizart component const fittingRoomEndpoint = server_address + '/fitting-room' + '?api_token=' + api_token + '&bba=true' ; function openFittingRoom (searchQuery) { const componentEndpoint = searchQuery ? fittingRoomEndpoint + searchQuery : fittingRoomEndpoint; let fittingRoomObject = document.getElementById('wizart-fitting-room-object'); const fittingRoomObjectContainer = fittingRoomObject.parentElement; fittingRoomObject.setAttribute('data', componentEndpoint); // object clonning is necessary as some browsers does not render "object" twice after changing data attribute const clonnedFittingRoomObject = fittingRoomObject.cloneNode(true); fittingRoomObjectContainer.appendChild(clonnedFittingRoomObject); fittingRoomObject.remove(); clonnedFittingRoomObject.classList.add('active'); // should be added to avoid duplicating scrollbars document.getElementsByTagName('html')[0].style.overflow = 'hidden'; } function openSpecificFittingRoom (vendorCode) { // query can be updated to search for necessary article const articleSearchQuery = '&article_query=' + '{\"vendor_code\": \"' + vendorCode + '\"}' ; openFittingRoom(articleSearchQuery); } // bba event - fired when back button is clicked at wizart component window.addEventListener('message', function (event) { if (~event.origin.indexOf(server_address)) { // exactly 'close_overlay' as it's sent from wizart component if (event.data === 'close_overlay') { // return overflow of target page to initial state document.getElementsByTagName('html')[0].style.overflow = 'auto'; document.getElementById('wizart-fitting-room-object').classList.remove('active'); } } });