将XML产品导入Prestashop

3
我目前正在开发一个XML插件,从外部来源(分销商)自动导入大量产品到我的Prestashop。XML导入器运行良好 - 它将所有产品数据添加到我的商店数据库中,但我在上传图像时遇到问题。我有外部图像的URL,在插件中以PHP变量的形式存储。Prestashop上传单个图像时使用7种不同大小的图像(不是从XML插件上传而是从其自己的管理面板上传产品)。我的XML上传器位于tools/xmlplugin。上传函数具有以下基本结构:
    myUploadFunction($external_product_ID)
    {
         ..upload to db functions here...
         $external_image_url_path;   
         $external_image_name;       //ex. image_001.jpg
    }

您能帮助我处理在Prestashop图片文件夹上传图片并创建多个不同尺寸的图片的物流问题吗?

PS:XML插件未连接到Prestashop核心(仅连接到数据库)。我无法理解Prestashop产品图片的URL结构。

有什么想法吗?


你使用的 Prestashop 版本是哪个? - Florian Lemaitre
图片名称在.htaccess中被重写。此外,正确的导入图像方式是推迟创建和上传它们的任务,并将产品保存到数据库中。在同步模式下导入图像需要太多时间。 - gskema
1个回答

2

首先,您需要在数据库中为图像创建一个新条目。如果您查看Prestashop Image Class,它将图像存储在由您的图像ID创建的目录下。您需要拆分图像ID的每个数字以获取路径。以下是Prestashop Image Class方法:

/**
 * Returns the path to the folder containing the image in the new filesystem
 *
 * @param mixed $id_image
 * @return string path to folder
 */
public static function getImgFolderStatic($id_image)
{
    if (!is_numeric($id_image)) {
        return false;
    }
    $folders = str_split((string)$id_image);
    return implode('/', $folders).'/';
}

在defines.inc.php文件中,_PS_IMG_DIR_定义了您的图片文件夹(默认:/img/),_PS_PROD_IMG_DIR_定义了您的产品图片文件夹(默认:p/)。默认情况下,产品图片的文件夹是/img/p/
如果一张图片的ID为927,名称为“test.jpg”,则它将存储在/img/p/9/2/7/927.jpg下。
首先尝试对几个产品进行此操作,然后在Prestashop BackOffice中转到Preferences > Images > regenerate thumbnails(页面底部)。 Prestashop应该会为您生成每个产品的图像大小。
如果不起作用或您需要更多说明,请告诉我。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接