将XML产品导入Prestashop

时间:2016-01-05 09:50:41

标签: php xml prestashop prestashop-1.6

我目前正在开发一个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结构。

有什么想法吗?

1 个答案:

答案 0 :(得分: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,而名称为#34; test.jpg"它将存储在/img/p/9/2/7/927.jpg

首先尝试使用一些产品,然后在Prestashop BackOffice中转到Preferences > Images > regenerate thumbnails (at the bottom of the page)。 Prestashop应为您生成每种产品的图像尺寸。

如果它不起作用或者您需要更多说明,请告诉我。