我正在编写一个简单的脚本,将产品直接插入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())');
现在我必须在其中插入照片,以便我可以完成产品并发布。
答案 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应为您生成每种产品的图像尺寸。
如果不起作用或需要更多说明,请告诉我。