/** * İncelebi Widget - Otomatik Sepet Eklentisi * Widget ID: A137FAE62056C858 * Store: Admin User Store * Platform: ikas */ window.İncelebiWidget = { config: { widgetId: "A137FAE62056C858", storeId: 2, allowedDomain: "www.dericlub.com.tr", platform: "ikas", platformDisplay: "ikas", selectors: { addToCartButton: "[data-add-to-cart], .add-to-cart, #add-to-cart-button, .sepete-ekle", quantityInput: "input[name="quantity"], .quantity-input, #quantity, [data-quantity]" }, bulkCart: { cartPageUrl: "/cart", productPagePattern: "", processingDelay: 2, supportsAjax: false } }, init: function(options) { options = options || {}; console.log("İncelebi Widget başlatılıyor..."); // Domain kontrolü if (!this.checkDomain()) { console.warn("İncelebi Widget: Bu domain için yetkilendirilmemiş"); return false; } console.log(`İncelebi Widget Platform: ${this.config.platformDisplay} (${this.config.platform})`); // İncelebi'den geliyor mu kontrol et const paramType = this.checkIncelebiParams(); if (paramType === 'single') { console.log("İncelebi tek ürün parametresi tespit edildi..."); this.startWidget(); } else if (paramType === 'bulk') { console.log("İncelebi toplu sepet parametresi tespit edildi..."); this.startBulkCartProcess(); } else { console.log("İncelebi Widget yüklendi, parametreler bekleniyor..."); } return true; }, checkDomain: function() { if (!this.config.allowedDomain) return true; const currentDomain = window.location.hostname.toLowerCase(); return currentDomain === this.config.allowedDomain || currentDomain.endsWith('.' + this.config.allowedDomain); }, checkIncelebiParams: function() { const urlParams = new URLSearchParams(window.location.search); // Tek ürün kontrolü (mevcut sistem) if (urlParams.get('incelebi_cart') === '1') { return 'single'; } // Toplu sepet kontrolü (yeni sistem) if (urlParams.get('incelebi_bulk_cart') === '1') { return 'bulk'; } return false; }, startWidget: function() { console.log("İncelebi Widget çalışmaya başlıyor..."); // Sayfanın yüklenmesini bekle if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => { this.executeWidget(); }); } else { this.executeWidget(); } }, executeWidget: function() { const self = this; setTimeout(function() { try { // URL parametrelerini al const urlParams = new URLSearchParams(window.location.search); const productId = urlParams.get('product_id'); const quantity = urlParams.get('quantity') || '1'; console.log(`İncelebi Widget: Ürün ID ${productId}, Miktar ${quantity}`); // Miktar alanını doldur self.setQuantity(quantity); // Varyantları otomatik ayarla (URL parametrelerinden) self.setVariantsFromUrl(urlParams); // Sepete ekle butonuna tıkla setTimeout(function() { self.clickAddToCart(productId); }, 500); } catch (error) { console.error("İncelebi Widget hatası:", error); } }, 1000); }, setQuantity: function(quantity) { const quantityInput = document.querySelector(this.config.selectors.quantityInput); if (quantityInput) { quantityInput.value = quantity; quantityInput.dispatchEvent(new Event('change', { bubbles: true })); console.log(`İncelebi Widget: Miktar ${quantity} olarak ayarlandı`); } else { console.warn(`İncelebi Widget: Miktar alanı bulunamadı: ${this.config.selectors.quantityInput}`); } }, setVariantsFromUrl: function(urlParams) { // Otomatik varyant tespiti - URL parametrelerinden const variantParams = []; // URL'deki tüm variant_ parametrelerini bul for (const [key, value] of urlParams) { if (key.startsWith('variant_')) { const variantName = key.replace('variant_', ''); variantParams.push({ name: variantName, value: value }); } } if (variantParams.length === 0) { console.log("İncelebi Widget: Varyant parametresi bulunamadı"); return; } console.log("İncelebi Widget: Varyant parametreleri:", variantParams); // Otomatik seçici tahmini ve uygulama variantParams.forEach(variant => { const possibleSelectors = [ `select[name="${variant.name}"]`, `select[name="variant_${variant.name}"]`, `input[name="${variant.name}"]`, `input[name="variant_${variant.name}"]`, `.variant-${variant.name}`, `#variant-${variant.name}`, `.color-selector`, // Renk için `.size-selector`, // Beden için `select[data-variant="${variant.name}"]` ]; let applied = false; for (const selector of possibleSelectors) { const element = document.querySelector(selector); if (element && !applied) { try { if (element.tagName === 'SELECT') { // Select element için değer ata const option = element.querySelector(`option[value="${variant.value}"]`); if (option) { element.value = variant.value; element.dispatchEvent(new Event('change', { bubbles: true })); console.log(`İncelebi Widget: ${variant.name} = ${variant.value} ayarlandı (${selector})`); applied = true; } } else if (element.type === 'radio') { // Radio button için const radioElement = document.querySelector(`${selector}[value="${variant.value}"]`); if (radioElement) { radioElement.checked = true; radioElement.dispatchEvent(new Event('change', { bubbles: true })); console.log(`İncelebi Widget: ${variant.name} = ${variant.value} ayarlandı (radio)`); applied = true; } } else { // Diğer input türleri için element.value = variant.value; element.dispatchEvent(new Event('change', { bubbles: true })); console.log(`İncelebi Widget: ${variant.name} = ${variant.value} ayarlandı`); applied = true; } } catch (error) { console.warn(`İncelebi Widget: ${selector} varyant ayarlanamadı:`, error); } } } if (!applied) { console.warn(`İncelebi Widget: ${variant.name} varyantı için uygun seçici bulunamadı`); } }); }, clickAddToCart: function(productId) { const addToCartButton = document.querySelector(this.config.selectors.addToCartButton); if (addToCartButton) { addToCartButton.click(); console.log("İncelebi Widget: Sepete ekle butonuna tıklandı"); // Kullanım istatistiği gönder this.trackUsage(productId); } else { console.warn(`İncelebi Widget: Sepete ekle butonu bulunamadı: ${this.config.selectors.addToCartButton}`); } }, trackUsage: function(productId) { fetch('/api/widget/track/', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ widgetId: this.config.widgetId, storeId: this.config.storeId, productId: productId, success: true, timestamp: new Date().toISOString() }) }).catch(function() { // Tracking hatası önemli değil }); }, // ========== BULK CART PROCESSING ========== startBulkCartProcess: function() { console.log("İncelebi Toplu Sepet işlemi başlatılıyor..."); // URL'den sepet verilerini al const urlParams = new URLSearchParams(window.location.search); const cartDataParam = urlParams.get('cart_data'); if (!cartDataParam) { console.error("İncelebi Widget: Sepet verileri bulunamadı"); return; } try { const cartItems = JSON.parse(decodeURIComponent(cartDataParam)); console.log("İncelebi Widget: Sepet verileri:", cartItems); // Loading overlay'i göster this.showBulkProcessOverlay(cartItems); // İşlemi başlat this.processBulkCartItems(cartItems); } catch (error) { console.error("İncelebi Widget: Sepet verileri parse edilemedi:", error); } }, showBulkProcessOverlay: function(items) { // Overlay HTML'i oluştur const overlayHTML = `

🛒 Sepetiniz Hazırlanıyor

Hazırlanıyor...

${items.map((item, index) => `
${item.name || `Ürün ${item.product_id}`} (x${item.quantity})
`).join('')}

⏱️ Tahmini süre: ${items.length * this.config.bulkCart.processingDelay} saniye

`; // Overlay'i sayfaya ekle document.body.insertAdjacentHTML('beforeend', overlayHTML); }, processBulkCartItems: async function(items) { const self = this; let currentIndex = 0; for (let i = 0; i < items.length; i++) { const item = items[i]; currentIndex = i; try { // Progress güncelle self.updateBulkProgress(i, items.length, item); // Ürünü işle await self.processSingleBulkItem(item, i); // Başarılı işaretle document.getElementById(`incelebi-status-${i}`).innerHTML = '✅'; // Bekleme süresi (son ürün değilse) if (i < items.length - 1) { await self.delay(self.config.bulkCart.processingDelay * 1000); } } catch (error) { console.error(`İncelebi Widget: Ürün ${item.product_id} işlenemedi:`, error); // Hatalı işaretle document.getElementById(`incelebi-status-${i}`).innerHTML = '❌'; } } // Tüm işlemler tamamlandı self.completeBulkProcess(); }, processSingleBulkItem: function(item, index) { return new Promise((resolve, reject) => { const self = this; // Ürün sayfası URL'ini oluştur let productUrl = self.config.bulkCart.productPagePattern; if (productUrl) { // URL şablonundaki yer tutucuları değiştir productUrl = productUrl .replace('{id}', item.product_id) .replace('{slug}', item.slug || item.product_id) .replace('{product_id}', item.product_id); } else { // Varsayılan URL formatı productUrl = `/product/${item.product_id}`; } // İncelebi parametrelerini ekle const separator = productUrl.includes('?') ? '&' : '?'; const fullUrl = `${productUrl}${separator}incelebi_cart=1&product_id=${item.product_id}&quantity=${item.quantity}`; // Varyant parametrelerini ekle if (item.variants && typeof item.variants === 'object') { Object.keys(item.variants).forEach(key => { fullUrl += `&variant_${key}=${encodeURIComponent(item.variants[key])}`; }); } console.log(`İncelebi Widget: İşleniyor - ${fullUrl}`); if (self.config.bulkCart.supportsAjax) { // AJAX ile işle (gelecekte geliştirilebilir) self.processViaAjax(item).then(resolve).catch(reject); } else { // iframe ile işle self.processViaIframe(fullUrl, item).then(resolve).catch(reject); } }); }, processViaIframe: function(url, item) { return new Promise((resolve, reject) => { const iframe = document.createElement('iframe'); iframe.style.display = 'none'; iframe.style.width = '0'; iframe.style.height = '0'; let resolved = false; iframe.onload = function() { if (!resolved) { resolved = true; setTimeout(() => { document.body.removeChild(iframe); resolve(item); }, 1000); // Sayfa yüklendikten sonra kısa bekle } }; iframe.onerror = function() { if (!resolved) { resolved = true; document.body.removeChild(iframe); reject(new Error('Sayfa yüklenemedi')); } }; // Timeout ekle setTimeout(() => { if (!resolved) { resolved = true; document.body.removeChild(iframe); reject(new Error('Timeout')); } }, 10000); // 10 saniye timeout document.body.appendChild(iframe); iframe.src = url; }); }, processViaAjax: function(item) { // Gelecekte AJAX destekli siteler için geliştirilebilir return Promise.reject(new Error('AJAX desteği henüz implementasyona eklenmedi')); }, updateBulkProgress: function(current, total, item) { const percentage = ((current + 1) / total) * 100; // Progress bar güncelle const progressFill = document.getElementById('incelebi-progress-fill'); if (progressFill) { progressFill.style.width = `${percentage}%`; } // Mevcut ürün bilgisini güncelle const currentItemElement = document.getElementById('incelebi-current-item'); if (currentItemElement) { const itemName = item.name || `Ürün ${item.product_id}`; currentItemElement.textContent = `${itemName} sepete ekleniyor... (${current + 1}/${total})`; } // Mevcut ürünü vurgula if (current > 0) { const prevItem = document.getElementById(`incelebi-item-${current - 1}`); if (prevItem) prevItem.style.backgroundColor = 'transparent'; } const currentItem = document.getElementById(`incelebi-item-${current}`); if (currentItem) { currentItem.style.backgroundColor = '#f0f9ff'; } }, completeBulkProcess: function() { const self = this; // Progress'i %100 yap const progressFill = document.getElementById('incelebi-progress-fill'); if (progressFill) { progressFill.style.width = '100%'; } // Tamamlandı mesajı const currentItemElement = document.getElementById('incelebi-current-item'); if (currentItemElement) { currentItemElement.innerHTML = '🎉 Sepetiniz hazır! Sepet sayfasına yönlendiriliyorsunuz...'; } // İptal butonunu gizle const cancelBtn = document.getElementById('incelebi-cancel-btn'); if (cancelBtn) { cancelBtn.style.display = 'none'; } // 2 saniye sonra sepet sayfasına yönlendir setTimeout(() => { const cartUrl = self.config.bulkCart.cartPageUrl || '/cart'; window.location.href = cartUrl; }, 2000); }, cancelBulkProcess: function() { const overlay = document.getElementById('incelebi-bulk-overlay'); if (overlay) { overlay.remove(); } console.log("İncelebi Widget: Toplu sepet işlemi iptal edildi"); }, delay: function(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } }; // Widget'ı otomatik başlat if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { if (window.İncelebiWidget) { window.İncelebiWidget.init(); } }); } else { if (window.İncelebiWidget) { window.İncelebiWidget.init(); } }
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image

HAMMER JACK Erkek Wode Kalın Taban Casual Ayakkabı Gerçek Deri HJ 24770M

3.499,00 ₺2.449,30 ₺Including Tax%30
0 Review
RENK: SİYAH
BEDEN:
*Spor tarzın rahatlığını klasik stilin incelikli çizgileriyle bir araya getiren hibrit bir tasarım. Sofistike tarzı ve esnek tabanlarıyla ofisten sokağa kadar attığınız her adımı destekler.
Product Details
Yaş Grubu
Gender


Discover Our Products!

Image
%50
Image
%50
Image
%30
Image
%50
Image
%50
Image
%30

Reviews

0 Review