在我的新商店视图中使用我的默认商店中的所有图像

时间:2016-08-29 18:21:34

标签: php image shell magento

我有一个新的商店视图,我使用magento admin更新了所有产品:**Manage Products > Select all > Update Attributes**然后选择新商店。现在我的所有产品都与我的新商店视图有关,我的所有图片都有问题。在前端显示所有占位符。在管理面板中,当我点击产品然后图像..它可能有图像但它没有被选择使用基本图像,小图像或缩略图。

有没有办法更新新商店视图中的所有图片以使用默认商店视图主图像?

require_once 'abstract.php';

class Attach_Default_Store_Images Extends Mage_Shell_Abstract {

    public function run()
    {
        $products = Mage::getModel('catalog/product')->getCollection();
        foreach ($products as $product) {
            $productFrom = $product->setStoreId(1)->getImage();
            $productTo = $product->setStoreId(13)
            ->setImage($productFrom)
            ->setSmallImage($productFrom)
            ->setThumbnail($productFrom);
            echo "Images Updated\n";
            $product->save();
   }

        Mage::getModel('catalog/product_image')->clearCache();
        echo "Image Cache Cleared\n";

    }


    public function usageHelp()
    {
        return <<<USAGE
Usage:  php -f cache.php -- [options]
        php -f cache.php -- clean

  clean             Clean Old Cache
  help              This help

USAGE;
    }
}

$shell = new Attach_Default_Store_Images();
$shell->run();

运行上面的shell脚本?

3 个答案:

答案 0 :(得分:3)

嗨,您可以使用 magmi ,只需从magento admin导出产品csv,然后通过 magmi 它将非常快速,轻松地完成您的工作。

感谢

答案 1 :(得分:1)

$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*');
foreach ($products as $product) {
    if (!$product->hasImage()) continue;
    if (!$product->hasSmallImage()) $product->setSmallImage($product->getImage());
    if (!$product->hasThumbnail()) $product->setThumbnail($product->getImage());
    $product->save();
}

答案 2 :(得分:0)

在magento root中运行此脚本:

<?php
    ini_set('memory_limit','2048M');
    error_reporting(E_ALL);
    ini_set('display_errors', '1');

    require_once('app/Mage.php');
    Mage::app('default');
    $storeId = 0;
    Mage::app()->setCurrentStore(Mage::getModel('core/store')->load($storeId));

    $from_id    = 1 // product id from;
    $to_id  = 1000 // product id to;
    $products = Mage::getModel('catalog/product')
    ->getCollection()
    ->addAttributeToSelect('*')
    ->addFieldToFilter('entity_id',array('gteq'=>$from_id))
    ->addFieldToFilter('entity_id',array('lteq'=>$to_id));

    foreach ($products as $product) {   

     if (!$product->getImage()) continue;
    if (!$product->getSmallImage()) $product->setSmallImage($product->getImage());
    if (!$product->getThumbnail()) $product->setThumbnail($product->getImage()); 
    $product->save(); 

    }
    ?>