首页 文章

将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结构 .

有任何想法吗?

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).'/';
    }
    

    在define.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 (at the bottom of the page) . Prestashop应为您生成每种产品的图像尺寸 .

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

相关问题