/** * İ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

GD 1780 Hakiki Deri Uzun Cüzdan

1.459,00 ₺1.021,30 ₺(KDV Dahil)%30
2. ÜRÜNDE %40 İNDİRİM
0 Değerlendirme
RENK: LACİVERT
BEDEN:
* Genişlik:17 cm Boy:9 cm Derinlik:2 cm

-9 adet kredi kartı bölmesi
-1 adet para bölmesi bulunmaktadır.
Ürün Özellikleri
Boyu
Yaş Grubu
Marka
Cinsiyet
Bunları da beğenebilirsiniz!
Image
%30
GD 1555 Gerçek Deri Erkek Cüzdan
1.669,00 ₺1.168,30 ₺
+1
Image
%30
GD 1807 Hakiki Deri Erkek Cüzdan
1.839,00 ₺1.287,30 ₺
Image
%30
Image
%30
GD 1747 Gerçek Deri Erkek Cüzdan
1.839,00 ₺1.287,30 ₺
Image
%30
GD 1410 Hakiki Deri Erkek Cüzdan
1.129,00 ₺790,30 ₺
Image
%30
Image
%30
GD 1506 Hakiki Deri Erkek Cüzdan
2.049,00 ₺1.434,30 ₺
Image
%30
GD 708 Gerçek Deri Erkek Cüzdan
1.499,00 ₺1.049,30 ₺
Image
%30
Image
%30
GD 1549 Erkek Deri Cüzdan
1.669,00 ₺1.168,30 ₺
Image
%30
GD 1404 Hakiki Deri Erkek Cüzdan
1.199,00 ₺839,30 ₺
+1
Image
%30
GD 1582 Hakiki Deri Erkek Cüzdan
1.399,00 ₺979,30 ₺
+1
Image
%30
GD 1504 Hakiki Deri Erkek Cüzdan
1.459,00 ₺1.021,30 ₺
Image
%30
GD 716 Hakiki Deri Anahtarlık
1.169,00 ₺818,30 ₺
Image
%30
GD 1566 Hakiki Deri Erkek Cüzdan
1.299,00 ₺909,30 ₺
+1
Image
%30
Image
%30
GD 1513 Gerçek Deri Erkek Cüzdan
1.839,00 ₺1.287,30 ₺
+1
Image
%30
Image
%30
GD 1716 Gerçek Deri Erkek Cüzdan
1.839,00 ₺1.287,30 ₺
Image
%30
GD 1519 Gerçek Deri Erkek Cüzdan
1.769,00 ₺1.238,30 ₺
+1

Değerlendirmeler

0 Değerlendirme