php - 将 XML 产品导入 Prestashop

标签 php xml prestashop prestashop-1.6

我目前正在开发一个 XML 插件,它可以自动将大量产品从外部来源(分销商)导入到我的 Prestashop。 XML 导入器工作正常 - 它将所有产品数据添加到我商店的数据库中,但我在上传图像时遇到问题。我有我的外部图像的 URL,存储在插件的 PHP 变量中。 Prestashop 在上传时使用 7 种不同尺寸的单个图像(不是来自 XML 插件,而是在上传产品时来自其自己的管理面板)。我的 XML uploader 位于 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 Image Class,它将图像存储在根据您的图像 ID 创建的目录下。您需要拆分图像 ID 的每个数字以获取路径。这是 Prestashop 图像类方法:

/**
 * 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 应该为您生成每个产品的图像尺寸。

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

关于php - 将 XML 产品导入 Prestashop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34608605/

相关文章:

xml - 转换输出 `>` 而不是 `>`

java - 在 DP Java 中以编程方式设置 ImageView 大小

angularjs - 如何使用 Angular/Karma/Jasmine 正确测试放置(或发布)请求?

php - 是否使用 PHP 框架?

php - Facebook 注册 - Conceal 字段不返回数据

php - 使用 PHP Phar 加密

php - mysql:从 DESC LIMIT 中选择最后 10 行

android - 复选框加载速度是否比开关慢?

MySQL 调优 - prestashop

php - 覆盖 frontcontroller 或 modulefrontcontroller init() 方法以进行结帐