2016-07-04 8 views
0

Я хочу подсчитать изображения каждого продукта и сохранить/обновить значение в атрибуте imagecount.Magento: подсчет изображений продуктов и атрибут обновления

ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 

require('app/Mage.php'); // this is assuming your script is located in the Magento root dir 
Mage::app(); // initiate the Magento engine 

$allProductIds = Mage::getModel('catalog/product')->getCollection()->getAllIds(); 

$products = Mage::getModel('catalog/product')->getCollection() 
->addAttributeToFilter('entity_id', array('in' => $allProductIds)); 

foreach ($products as $product) { 

    $product->getGalleryImages(); 
    $pimagecount = count($product); 
    echo count($pimagecount); 
    $product->setImagecount($pimagecount); 
    $product->getResource()->saveAttribute($product, 'imagecount'); 
} 

Я попытался получить значения с помощью приведенного выше кода, но выход всегда равен 1 для каждого продукта.

ответ

1

Try ниже код

ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 

require('app/Mage.php'); // this is assuming your script is located in the Magento root dir 
Mage::app(); // initiate the Magento engine 

$allProductIds = Mage::getModel('catalog/product')->getCollection()->getAllIds(); 

$products = Mage::getModel('catalog/product')->getCollection() 
->addAttributeToFilter('entity_id', array('in' => $allProductIds)); 

foreach ($products as $product) { 
    $product = Mage::getModel("catalog/product")->load($product->getId()); 
    $gi = $product->getGalleryImages(); 
    $product->setImagecount(count($gi)); 
    $product->save(); 
} 
+0

эй спасибо за код. Я все еще получаю 1 для всех продуктов ... – Rob

+0

Я обновил свой код, можете ли вы снова проверить этот код. –

+0

Теперь номера не отображаются. Где функция count? Я думаю, что невозможно получить количество изображений без него. – Rob

0

Вы должны изменить свой код, как показано ниже:

ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 

require('app/Mage.php'); // this is assuming your script is located in  the Magento root dir 
Mage::app(); // initiate the Magento engine 


$products = Mage::getModel('catalog/product')->getCollection(); 

foreach ($products as $product) { 
$product = Mage::getModel('catalog/product')->load($product->getId()); 
$images = $product->getData('media_gallery'); 
$pimagecount = count($images['images']); 
echo $pimagecount; 
} 
+0

эй спасибо за код. Я все еще получаю 1 для всех продуктов ... – Rob

Смежные вопросы