我想计算每个产品的图像,并在属性imagecount中保存/更新值。
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。
答案 0 :(得分:1)
尝试以下代码
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();
}
答案 1 :(得分: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;
}