2013-11-22 106 views
3

我有一個產品對象,我在PHP腳本中創建該對象。我需要添加一個縮略圖和一個大的圖像,我已經在一個zip文件中。文件名稱包含產品ID。prestashop將圖像添加到產品

什麼是在代碼中實現此目的的最佳方式?我假設我需要將圖像提取到文件系統中的某處,但我不知道prestashop如何處理圖像。

謝謝!

+0

嘗試登錄到管理界面,它得到的一切。 – skrilled

+0

我無法爲您提供確切的路線,但是,請在班級和控制器中查找,以便掌握,以及如何通過prestashop完成。我建議看看'controllers/admin/AdminProductsController.php'。我知道,那5000行代碼太多了,儘管試試:-D。然後看看圖像類,因爲它們是創建圖像處理接口的唯一途徑。 classes/Image.php和classes/ImageManager.php –

回答

8

如果你有產品編號($ id_product)和圖像URL($網址),您可以執行以下操作:

$image = new Image(); 
$image->id_product = $id_product; 
$image->position = Image::getHighestPosition($id_product) + 1; 
$image->cover = true; // or false; 
if (($image->validateFields(false, true)) === true && 
($image->validateFieldsLang(false, true)) === true && $image->add()) 
{ 
    $image->associateTo($shops); 
    if (!self::copyImg($id_product, $image->id, $url, 'products', false)) 
    { 
     $image->delete(); 
    } 
} 
+0

這看起來完全像我需要的,但是當我嘗試運行這個時遇到了php錯誤。 「當沒有活動範圍時,不能訪問self ::」。 – Jay

+0

您可以複製從控制器/管理/ AdminImportController.php在你的類(作爲一種方法),或腳本的方法「copyImg」(如函數) 如果複製它作爲一個函數只是刪除「受保護的靜態」,並刪除調用它時的「self ::」。 – PrestaShopDeveloper

+0

我的2美分,我已經注意到,將copyImg的最後一個參數傳遞給「true」遠不止... mh ...安全,因爲PS會重新生成圖像,我已經使用了這個代碼,它只在該參數爲「true」 –

相關問題