【问题标题】:Magento importing imagesMagento 导入图片
【发布时间】:2013-08-28 11:46:37
【问题描述】:

我遇到了无法与他们的产品一起显示的图片。当我创建产品并通过(管理产品)手动插入带有该产品的图像时,图像显示这很棒。 但是我们有超过 1000 张产品图片需要上传,(所有产品信息都已经准备好了,我只需要添加图片) 我已导出产品 CSV 文件,工作图像地址为 /n/g/image1.jpg 然后我复制了它,但将图像更改为 image2.jpg、image3.jpg 等。然后我将新图像上传到我们服务器上的那个文件夹目录中,认为这就足够了。 然后,我上传 CSV 文件,清除缓存并重新索引数据,但是没有显示新图像,更糟糕的是,工作图像没有显示。 我在 CSV 中填写了图像、small_image 和缩略图详细信息。所有图像的大小均正确等。

更多信息可以告诉我在存储我的所有图像的目录中哪里可以只有 1 个图像文件夹? 谢谢

我使用的是 Magento 1.7.0.2 版

【问题讨论】:

  • 成瘾详情我没有媒体/导入,我可以看到很多人在他们的目录中都有。

标签: image magento csv product


【解决方案1】:

首先你的图片应该存储在media>import目录中

然后在您的 csv 文件中,只需在图像列 /imagename.jpg 中写入

它会在导入目录中找到相同的图像名称,如果图像存在则上传图像

编辑

如果您没有导入目录,则只需创建它

【讨论】:

  • 如果我没有媒体/导入,我可以简单地在目录中创建它吗?我有媒体,然后是 /catalog /customer 等。没有导入文件夹,因为我没有设置它。但是有 var/import 但其中包含我导入的 CSV 文件。
  • 如果没有,你应该创建文件夹
  • 它很棒,真的节省了很多时间。我很佩服你
  • @KeyurShah 总结了Current 1.9.2 Magento docs 中的内容,您可以查看这些内容以获得非常详细的演练
【解决方案2】:

很抱歉,magento 图像在幕后还有更多工作要做,它只是将文件名放入数据库并链接到您的图像。仅缓存生成就相当复杂。我相信你会很难按照你尝试的方式去做。

话虽如此,我确实有一个建议。由于您的图像已经在服务器上,我建议您编写一个简单的 php 脚本来告诉 magento 将它们附加到产品图像上。这可以是自动化的,但我会在下面给你一个小例子......

要附加图片,您只需像这样导航到网址 http://yoursite.com/imageattacher.php?sku=YOURSKU&image=yourimagefilename.jpg

脚本应该是这样的......在你的magento ROOT中创建一个文件并命名为imageattacher.php。将您的图像上传到 magento 媒体导入目录。我没有对此进行测试,但它应该可以工作。

<?php
    // Initialize magento for use outside of core
    umask(0);
    require_once 'app/Mage.php';
    Mage::app('admin');

    // Get the variables from the URL
    $sku = $_GET["sku"];
    $imageName = $_GET["image"];

    // get the image from the import dir
    $import = Mage::getBaseDir('media') . DS . 'import/' . $imageName;

    // Load the product by sku
    $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku);

    // if the product exists, attempt to add the image to it for all three items
    if ($product->getId() > 0)
    {
        // Add the images and set them for their respective usage (the radio button in admin)
        $product->addImageToMediaGallery($import,array('image', 'small_image', 'thumbnail'),false,false);

        // Make the changes stick
        $product->save();
    }

?>

看到这个http://www.danneh.org/2012/05/creating-products-programmatically-magento/

【讨论】:

  • 谢谢,如果是最后一个选项,我会试试这个。
【解决方案3】:

最后的问题是媒体目录下没有导入文件夹。图像已上传到此文件夹。 CSV 中的图像列已更改为 /image1.jpg,从而允许它们显示在网站上。

【讨论】:

    【解决方案4】:

    我最近不得不导入一堆 Magento 产品图片,这些图片都以 SKU 命名(例如 123456.jpg)。这是我用来导入它们的脚本,其中部分基于 CarComp 的回答。它仅适用于数字 SKU(例如 123456),但可以相当容易地修改以适应字母数字 SKU。

    <?php
    require_once(__DIR__ . "/app/Mage.php");
    Mage::app('admin');
    
    class Sku_ImageLoader {
        private $_uploadDir;
        private $_imagePaths;
    
        public function setUploadDirectory($dir = null) {
            if (empty($dir)) {
                if (isset($this->_uploadDir)) return $this;
                $dir = 'upload';            
                }
            $this->_uploadDir = Mage::getBaseDir('media') . DS . $dir; 
            // mkdir($this->_uploadDir . DS . "/loaded", 0770);
            return $this;
        }
    
        public function load() {
            $this->setUploadDirectory();
    
            // Match product images like 123456.jpg
            $pattern = '[0-9][0-9][0-9][0-9][0-9][0-9].{jpg,gif,png}';
    
            chdir($this->_uploadDir);
            $this->_imagePaths = glob($pattern, GLOB_BRACE);
            return $this;
        }
    
        public function showFiles() {
            $this->load();
            echo "\r\n\r\nSorry, I wasn't able to upload the following image files in " . $this->_uploadDir . "\r\n\r\n<pre>\r\n";
            print_r($this->_imagePaths);
            return $this;
        }
    
        private function _addImage($path) {
            $sku = (string)intval($path);
            try {
               echo "Loading SKU: {$sku} ... ";  
               $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku);
               // if the product exists, attempt to add the image to it for all three items
               if (strpos(get_class($product), 'Catalog_Model_Product') !== false && $product->getId() > 0) {
                   $product->addImageToMediaGallery($path,array('image', 'small_image', 'thumbnail'),false,false);
                   $product->save();
                   echo " ok \r\n";
                   return true;
               }
            } catch (Exception $e) {
                echo "Exception thrown for {$sku}: " . $e->getMessage() . "\r\n";
            }
            echo " (FAILED) \r\n";
           return false;
        }
    
        private function _moveImage($path) {
            // rename($path, 'loaded' . DS . $path);
            unlink($path);
        }
    
        public function import() {
            echo "<pre>\r\n";
            if (!isset($this->_imagePaths)) $this->load();
            foreach ($this->_imagePaths as $path) {
                if ($this->_addImage($path)) {
                    $this->_moveImage($path);
                }
            }
            return $this;
        }
    
    }
    
    $u = new Sku_ImageLoader();
    
    $u->import()->showFiles();
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 2013-10-18
      • 2023-04-09
      相关资源
      最近更新 更多