我遇到了没有用产品展示的图片。当我创建产品并通过(管理产品)手动插入带有该产品的图像时,图像显示哪个是好的。 但是我们有超过1000个需要上传的产品图片(所有产品信息已经上线我只需要添加图片) 我已导出产品CSV文件,工作图像地址为/n/g/image1.jpg 然后我复制了它,但是将图像更改为image2.jpg,image3.jpg等。然后我将新图像上传到我们服务器上的文件夹目录中,认为这已经足够了。 然后,我上传CSV文件,然后重新编制数据,然后重新索引数据,但是没有新图像显示,更糟糕的是工作图像不显示。 我已在CSV中填写图像,small_image和缩略图详细信息。所有图像的大小都是正确的。
还有更多可以告诉我哪里可以在我的所有图像存储的目录中有1个图像文件夹? 感谢
我正在使用Magento 1.7.0.2版
答案 0 :(得分:14)
首先,您的图片应存储在media>import
目录
然后在你的csv文件中写入图像列/imagename.jpg
它会在导入目录中找到相同的imagename,如果图像存在则会上传图像
编辑
如果您没有导入目录,则只需创建
答案 1 :(得分:3)
我很遗憾地说,但是幕后还有更多关于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/
答案 2 :(得分:0)
最后的问题是媒体目录下没有导入文件夹。图像已上传到此文件夹。 CSV中的图像列已更改为/image1.jpg,允许它们显示在网站上。
答案 3 :(得分:0)
我最近必须导入一堆Magento产品图片,这些图片全部由SKU命名(例如123456.jpg)。这是我用来导入它们的脚本,其中部分内容基于CarComp的答案。它只适用于数字SKU(例如123456),但可以很容易地修改以满足字母数字的需求。
<?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();
?>