Czy można uruchomić zapytanie, aby znaleźć listę produktów bez przypisanych do nich zdjęć? Idealnie chciałbym, aby kody SKU były drukowane na ekranie.
Czy można uruchomić zapytanie, aby znaleźć listę produktów bez przypisanych do nich zdjęć? Idealnie chciałbym, aby kody SKU były drukowane na ekranie.
Odpowiedzi:
Możesz znaleźć kolekcję poniżej kodu.
$_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' => '%/%/%'
),
));
możesz pobrać całą listę produktów, do której nie przypisano obrazów.
Jeśli chcesz tylko produkty, które nie mają image
, small_image
lub thumbnail
przypisane następnie odpowiedzi od @KeyulShah lub @TBIInfotech daje tylko to.
Jeśli chcesz produktów, które w ogóle nie mają obrazów, możesz uruchomić to zapytanie w bazie danych i je uzyskać.
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
Jeśli usuniesz having
oświadczenie, otrzymasz wynik 2 kolumn wraz ze skuską produktu i liczbą przypisanych do nich obrazów.
Możesz to po prostu wyeksportować jako plik csv.
Wystarczy niewielka modyfikacja tego, co opisał @keyul shah, po prostu umieść kod w katalogu głównym Magento:
<?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();
}
To działa dla mnie ....
$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'
);
Jeśli ktoś szuka Magento 2. To zadziała. To samo, co @Marius właśnie dodał jedną tabelę.
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