从 csv 文件产品问题导入 Magento

Importing in Magento from csv file products issues

我们在 Magento 中有进口产品的供应商 sheet。

问题:

在供应商 sheet 中,图像位于不同的文件夹中,但具有相同的图像

喜欢:

folder1/image.jpg

folder2/image.jpg 

现在,当我们在 Magento 中导入时,所有图像都在同一个文件夹中。而且每个产品都有相同的图像。

我该如何解决这个问题?

如果图像的名称总是相同的(如您的示例),那么您可以简单地存储您处理的所有图像名称(不包括目录),并检查它是否在那个数组。


否则,您将不得不比较图像,如下所示。此代码假定您有一个名为 $filenames.

的每个图像的文件名数组

例子

$imageHashes = []; //Define an array where hash of each image will be stored
$uniqueFiles = []; //The array which will contain only image files that are unique.

for ($i=0;$i<count($filenames);$i++) { //Loop through the filenames
    $hash = md5_file($filenames[$i]); //Get the hash of the image
    if (!in_array($hash,$imageHashes)) { //If the imageHashes array does not contain the hash, then this is a new image
        $imageHashes[] = $hash; //Add the hash to the imageHashes array
        $uniqueFiles[] = $filenames[$i]; //Add the filename to the list of filenames for unique images.
    }
}

散列

这是有效的,因为散列算法应该为放入其中的任何内容生成不同的散列。虽然 md5 长期以来一直不安全地存储密码,但在这种情况下使用它仍然完全没问题。

因此,每次循环运行时,它都会获取当前文件名的文件哈希值,然后检查该哈希值是否已存在于数组中。如果是这样,则什么也不会发生(请记住,同一个文件应该始终具有相同的哈希值,因此图像的相同克隆也应该共享相同的哈希值)因为图像已经找到并处理过。否则,我们将散列添加到 $imageHashes table(以便我们可以在下一次传递中与它进行比较),并将文件名添加到 $uniqueFiles 数组,以便我们可以使用稍后。

在此过程结束时,我们应该有一个数组,其中仅包含每个图像第一次出现的文件名。

备注

  • 您可以在 PHP Manual;

  • 中找到有关 md5_file 的更多信息
  • 有一个很棒的 Whosebug post here 讨论了使用 PHP.

  • 比较两个图像文件的其他方法