2016-01-05 49 views
3

我目前正在开发一个XML插件,该插件可将大量来自外部源(分销商)的产品自动导入到我的Prestashop中。 XML导入器工作正常 - 它将所有产品数据添加到我店的数据库,但是我在上传图像时遇到问题。我有我的外部图像的URL,存储在插件中的PHP变量中。 Prestashop上传时使用7种不同尺寸的单幅图片(不是来自XML插件,而是上传产品时从其自己的管理面板)。我的XML上传器位于tools/xmlplugin。上传功能具有这样的基本结构:将XML产品导入Prestashop

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结构。

任何想法?

+0

你使用的是女巫版的Prestashop? –

+0

版本1.6.1.3。 –

+0

图像名称在'.htaccess'中被重写。另外,导入图像的正确方法是放弃创建和上传图像的任务,并将产品保存到数据库中。以同步模式导入图像需要花费太多时间 – gskema

回答

2

首先,您需要为数据库中的图像创建一个新条目。 如果你看看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 (at the bottom of the page)。 Prestashop应该为您生成每种产品图像大小。

请让我知道,如果它不工作,或者如果你需要更多的指示。