将图像插入prestashop数据库

时间:2016-01-14 14:54:26

标签: php prestashop prestashop-1.6

我正在编写一个简单的脚本,将产品直接插入prestashop数据库,我找不到如何将图像插入数据库。

到目前为止,我的脚本是:

  mysqli_query($conn, 'INSERT INTO ps_product (id_supplier, id_manufacturer, id_category_default, id_shop_default, id_tax_rules_group, on_sale, online_only, quantity, minimal_quantity, price, wholesale_price, out_of_stock, active, redirect_type, available_for_order,  show_price, indexed, visibility, cache_default_attribute, date_add, date_upd, pack_stock_type,ean13,upc,unity,reference,supplier_reference,location) 
VALUES ("2", "2" , "5", "1", "1","1","1", "0", "1", "30", "30", "2", "1", "302","1","1","1","both","19",now(),now(),"3","0","0","","demo_1","","" )');


mysqli_query($conn, 'INSERT INTO ps_product_lang (id_product, id_lang, description, description_short, link_rewrite, name, available_now,meta_description,meta_keywords,meta_title,available_later) 
VALUES (LAST_INSERT_ID(),"1","long des","test","insert title","title inserted","In stock","","","","")');


mysqli_query($conn, 'INSERT INTO ps_product_shop (id_product,id_shop,id_category_default,id_tax_rules_group,price,wholesale_price,unity,active,redirect_type,indexed,cache_default_attribute,date_add,date_upd ) 
VALUES (LAST_INSERT_ID(),"1","5","1","30","30","","1","301","1","1",now(),now())');

现在我必须在其中插入照片,以便我可以完成产品并发布。

1 个答案:

答案 0 :(得分:4)

首先,您需要在数据库(表格图像)中为图像创建新条目。 如果您查看Prestashop Image Class,它会将图像存储在根据您的图像ID创建的目录下。您需要拆分图像ID的每个数字以获取路径。这是Prestashop Image Class方法:

/**
 * 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应为您生成每种产品的图像尺寸。

如果不起作用或需要更多说明,请告诉我。