Variant ürünlerde Google Search Results'ta görsel eksikliği analizi ve çözümü
Sorun nedir?
Google'da ürün aradığınızda, bazı ürünlerin görselleri yanlış çıkıyor veya hiç görsel gösterilmiyor.
Özellikle farklı varyantları olan ürünlerde bu sorun görülüyor (mesela 1070mm çatal, 1150mm çatal gibi).
Neden oluyor?
Sistem şu şekilde çalışıyor: Her ürünün bir "ana ürün" ve onun "varyantları" var.
Mesela "İXTİF CPD18TVL Forklift" ana ürün, onun "920mm çatal", "1070mm çatal" gibi varyantları var.
Ana ürünün görseli var, ama varyantların kendi görseli yok.
🚨 Asıl Problem:
Google Shopping Feed'de (ürün katalog dosyası) varyant ürünler ana ürünün görselini kullanıyor ✅
AMA Google Search Results (arama sonuçları) için kullanılan Schema.org yapısında bu kontrol YOK ❌
Sonuç: Google arama sonuçlarında varyant ürünler "görselsiz" kalıyor ve Google rastgele bir görsel seçiyor veya hiç görsel göstermiyor.
Çözüm ne olacak?
Varyant ürünlerde kendi görseli yoksa, otomatik olarak ana ürünün görselini kullanacak.
Bu sayede Google'da her ürün doğru görselle görünecek.
⚠️ Şu an: Varyantlar Google'da görselsiz → Düzeltme sonrası: Hepsi ana ürünün görselini kullanacak
Modules/Shop/app/Models/ShopProduct.php - Line 851-863 (getProductSchema)Modules/Shop/app/Http/Controllers/GoogleShoppingFeedController.php - Line 148-201 (feed images)public/productfeed.php - Line 153-206 (feed images)❌ Mevcut Kod (Schema.org - Sorunlu):
// ShopProduct.php line 851-863
$images = [];
if ($this->hasMedia('hero')) {
$images[] = $this->getFirstMediaUrl('hero');
}
foreach ($this->getMedia('gallery') as $media) {
$images[] = $media->getUrl();
}
if (!empty($images)) {
$productSchema['image'] = count($images) === 1 ? $images[0] : $images;
}
// ⚠️ Parent product fallback YOK!
✅ Feed Kodu (Doğru Çalışıyor):
// GoogleShoppingFeedController.php line 148-201
$imageUrls = [];
// 1. Kendi medyasını kontrol et
if ($productModel && $productModel->hasMedia('hero')) {
$imageUrls[] = $productModel->getFirstMediaUrl('hero');
}
if ($productModel && $productModel->hasMedia('gallery')) {
foreach ($productModel->getMedia('gallery') as $media) {
$imageUrls[] = $media->getFullUrl();
}
}
// 2. Eğer kendi medyası yoksa ve VARIANT ise: Ana ürünün medyasını kullan
if (empty($imageUrls) && $product->parent_product_id) {
$parentProduct = ShopProduct::find($product->parent_product_id);
if ($parentProduct && $parentProduct->hasMedia('hero')) {
$imageUrls[] = $parentProduct->getFirstMediaUrl('hero');
}
if ($parentProduct && $parentProduct->hasMedia('gallery')) {
foreach ($parentProduct->getMedia('gallery') as $media) {
$imageUrls[] = $media->getFullUrl();
}
}
}
// ✅ Parent product fallback VAR!
ShopProduct.php'deki getProductSchema() metoduna parent product image fallback logic eklenecek:
⏱️ Google Tarafında Yansıma Süresi:
Schema.org değişiklikleri Google tarafından 1-14 gün içinde algılanır ve arama sonuçlarında güncellenir.
Google Search Console'dan "URL İnceleme" ile hızlandırılabilir.