/* Add custom Js styles below */ (function () { try { // 1) اكتشاف صفحة المنتج (عدّلي الشرط لو رابط منتجاتك يختلف) var isProductPage = /\/products?\//i.test(location.pathname) || document.querySelector('[itemtype="https://schema.org/Product"]') || document.querySelector('.product, .single-product'); if (!isProductPage) return; // 2) جلب بيانات أساسية من الصفحة (نحاول بأكثر من محدد لأن الثيمات تختلف) var nameEl = document.querySelector('[itemprop="name"], h1.product-title, h1'); var imgEl = document.querySelector('.product-gallery img, .product-image img, [itemprop="image"]'); var priceEl= document.querySelector('[itemprop="price"], .product-price, .price'); var skuEl = document.querySelector('[itemprop="sku"], .sku'); var name = nameEl ? nameEl.textContent.trim() : null; var image = imgEl ? (imgEl.currentSrc || imgEl.src || '').trim() : null; // استخراج السعر كنص ثم أرقام فقط var priceText = null; if (priceEl) { priceText = priceEl.getAttribute('content') || priceEl.textContent; } var price = priceText ? priceText.replace(/[^\d.,]/g, '').replace(',', '.') : null; // 3) محاولة التقاط التقييمات إن كانت ظاهرة للمستخدم // غيّري المحددات أدناه حسب ثيمك إن لزم: var ratingValueEl = document.querySelector('[itemprop="ratingValue"], .rating-value, .stars [data-value]'); var reviewCountEl = document.querySelector('[itemprop="reviewCount"], .review-count, .reviews-count'); var ratingValue = ratingValueEl ? (ratingValueEl.getAttribute('content') || ratingValueEl.textContent).trim() : null; var reviewCount = reviewCountEl ? (reviewCountEl.getAttribute('content') || reviewCountEl.textContent).trim() : null; // تنظيف أرقام التقييم وعدد المراجعات if (ratingValue) ratingValue = ratingValue.replace(/[^\d.]/g, ''); if (reviewCount) reviewCount = reviewCount.replace(/[^\d]/g, ''); // 4) بناء كائن Product var data = { "@context": "https://schema.org/", "@type": "Product", "name": name || document.title, "image": image ? [image] : undefined, "description": (document.querySelector('meta[name="description"]')?.content || '').slice(0, 160), "brand": { "@type": "Brand", "name": "متجر عِز" }, "offers": { "@type": "Offer", "url": location.href, "priceCurrency": "SAR", "price": price || undefined, "availability": "https://schema.org/InStock" } }; // 5) إضافة aggregateRating فقط إذا التقييمات ظاهرة فعلاً if (ratingValue && reviewCount && Number(reviewCount) > 0) { data.aggregateRating = { "@type": "AggregateRating", "ratingValue": ratingValue, "reviewCount": reviewCount }; } // 6) حقن JSON-LD في var script = document.createElement('script'); script.type = 'application/ld+json'; script.text = JSON.stringify(data); document.head.appendChild(script); } catch (e) { console.warn('Schema inject error:', e); } })();