2013-11-22 110 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” –

相关问题