Hiç resim atanmamış ürünlerin listesini bulmak için sorgu çalıştırmak mümkün müdür? İdeal olarak SKU'ların ekranda basılmasını istiyorum.
Hiç resim atanmamış ürünlerin listesini bulmak için sorgu çalıştırmak mümkün müdür? İdeal olarak SKU'ların ekranda basılmasını istiyorum.
Yanıtlar:
Aşağıdaki kod için koleksiyonu bulabilirsiniz.
$_products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter(array(
array (
'attribute' => 'image',
'like' => 'no_selection'
),
array (
'attribute' => 'image', // null fields
'null' => true
),
array (
'attribute' => 'image', // empty, but not null
'eq' => ''
),
array (
'attribute' => 'image', // check for information that doesn't conform to Magento's formatting
'nlike' => '%/%/%'
),
));
Resim atamamış tüm ürün listesini alabilirsiniz.
Eğer yoksa sadece ürünlerini isterseniz image
, small_image
ya da thumbnail
atanmış ardından @KeyulShah veya @TBIInfotech gelen cevaplar size sadece verecektir.
Hiç görüntüsü olmayan ürünlerin olmasını istiyorsanız, bu sorguyu veritabanında çalıştırabilir ve alabilirsiniz.
SELECT
e.sku, COUNT(m.value) as cnt
FROM
catalog_product_entity e
LEFT JOIN catalog_product_entity_media_gallery m
ON e.entity_id = m.entity_id
GROUP BY
e.entity_id
HAVING
cnt = 0
having
İfadeyi kaldırırsanız, ürün skus'u ve kendilerine atanan resim sayısı ile 2 sütun sonucu elde edersiniz.
Bunu sadece bir csv olarak dışa aktarabilirsiniz.
@Keyul shah'ın tanımladığı şeyde sadece küçük bir değişiklik yapın, kodu magento köküne koyun:
<?php
require 'app/Mage.php';
Mage::app();
$_products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter(array(
array (
'attribute' => 'image',
'like' => 'no_selection'
),
array (
'attribute' => 'image', // null fields
'null' => true
),
array (
'attribute' => 'image', // empty, but not null
'eq' => ''
),
array (
'attribute' => 'image', // check for information that doesn't conform to Magento's formatting
'nlike' => '%/%/%'
),
));
foreach($_products as $_product){
echo $_product->getSku();
}
Bu benim için çalışıyor ....
$products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter(
array(
array(
'attribute' => 'image',
'null' => '1'
),
array(
'attribute' => 'small_image',
'null' => '1'
),
array(
'attribute' => 'thumbnail',
'null' => '1'
),
array(
'attribute' => 'image',
'nlike' => '%/%/%'
),
array(
'attribute' => 'small_image',
'nlike' => '%/%/%'
),
array(
'attribute' => 'thumbnail',
'nlike' => '%/%/%'
)
),
null,
'left'
);
Magento 2 arayan varsa. Bu işe yarayacak. @Marius ile aynı bir tablo ekledi.
SELECT
e.sku, COUNT(m.value) as cnt
FROM catalog_product_entity e
LEFT JOIN catalog_product_entity_media_gallery_value_to_entity r
ON e.entity_id = r.entity_id
LEFT JOIN catalog_product_entity_media_gallery m
ON r.value_id = m.value_id
GROUP BY
e.entity_id
HAVING
cnt = 0