¿Es posible ejecutar una consulta para encontrar una lista de productos sin imágenes asignadas? Idealmente, me gustaría que los SKU se impriman en la pantalla.
¿Es posible ejecutar una consulta para encontrar una lista de productos sin imágenes asignadas? Idealmente, me gustaría que los SKU se impriman en la pantalla.
Respuestas:
Puede encontrar la colección para el siguiente código.
$_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' => '%/%/%'
),
));
puede obtener toda la lista de productos que no tiene asignación de imágenes.
Si desea que sólo los productos que no tienen image
, small_image
o thumbnail
asignados a continuación las respuestas de @KeyulShah o @TBIInfotech le dará exactamente eso.
Si desea los productos que no tienen imágenes, puede ejecutar esta consulta en la base de datos y obtenerlos.
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
Si elimina la having
declaración, obtendrá un resultado de 2 columnas con los skus del producto y el número de imágenes asignadas a ellos.
Puede exportar eso como un csv.
Solo una pequeña modificación a lo que @keyul shah describió, solo ponga el código en la raíz de 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();
}
Esto funciona para mi ...
$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'
);
Si alguien busca Magento 2. Esto funcionará. Es lo mismo que @Marius acaba de agregar una tabla.
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