2016-01-05 264 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應該爲您生成每種產品圖像大小。

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