Php prestashop将图像添加到产品中

Php prestashop将图像添加到产品中,php,prestashop,Php,Prestashop,我有一个product对象,我正在PHP脚本中创建它。我需要添加一个缩略图和一个大的图像,我在一个zip文件。文件名包含产品ID 在代码中实现这一点的最佳方法是什么?我假设我需要将图像提取到文件系统中的某个地方,但我不知道prestashop如何处理图像 谢谢 如果您有产品ID($ID\u Product)和图像URL($URL),则可以执行以下操作: $image = new Image(); $image->id_product = $id_product; $image->po

我有一个product对象,我正在PHP脚本中创建它。我需要添加一个缩略图和一个大的图像,我在一个zip文件。文件名包含产品ID

在代码中实现这一点的最佳方法是什么?我假设我需要将图像提取到文件系统中的某个地方,但我不知道prestashop如何处理图像


谢谢

如果您有产品ID($ID\u Product)和图像URL($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();
    }
}

尝试登录到管理界面,它拥有一切。我无法为您提供确切的路线,但是,去看看类和控制器,了解prestashop是如何完成的。我建议查看
controllers/admin/AdminProductsController.php
。我知道,这5000行代码太多了,尽管尝试:-D。然后看看图像类,因为它们是创建图像处理接口的唯一途径。classes/Image.php和classes/ImageManager.php这看起来和我需要的完全一样,但是当我尝试运行这个时,我遇到了一个php错误。“当没有类作用域处于活动状态时无法访问self::您可以从类中的controllers/admin/AdminImportController.php复制方法“copyImg”(作为方法),或者从脚本(作为函数),如果您将其作为函数复制,则只需在调用它时删除“protectedstatic”并删除“self::”。我的2美分,我注意到,将copyImg的最后一个参数传递给“true”远比…mh。。。安全,因为PS将重新生成图像,所以我使用了这段代码,并且它仅在该参数为“true”时有效。如果我有一个产品的多个图像,如何在循环中使用这段代码。@Matteo Bononi'peorthyr'不建议在初始上载期间重新生成图像,如果您有多个图像,因为这可能会导致脚本超时。这是一个耗时的操作。