【问题标题】:Use all images from my default store on my new store view在我的新商店视图中使用我默认商店中的所有图像
【发布时间】:2017-01-05 20:44:00
【问题描述】:

我有一个新的商店视图,我已经使用 magento 管理员更新了所有产品:**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脚本?

【问题讨论】:

    标签: php image shell magento


    【解决方案1】:

    您可以使用ma​​gmi,只需从magento admin 导出产品CSV,然后通过ma​​gmi 重新导入SKU、图片、small_image 和缩略图等必填字段它会非常快速轻松地完成您的工作。

    【讨论】:

    • 我宁愿不使用 magmi,但我对这个选项很熟悉。
    【解决方案2】:

    在您的 magento 根目录中运行此脚本:

    <?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(); 
    
        }
        ?>
    

    【讨论】:

    • 嗨@Abhinav Sing,我想要所有图片附加到的新商店视图是 13。
    【解决方案3】:
    $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();
    }
    

    【讨论】:

    • 有没有办法使用它并在 /shell 中运行它?
    • 我的新商店视图@faizanbeg 是 13 岁。
    猜你喜欢
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    相关资源
    最近更新 更多