簡體   English   中英

在prestashop中從模塊創建產品

[英]Create product from a module in prestashop

我們嘗試使用以下代碼從模塊創建自定義產品:

$defaultLanguage = new Language((int)(Configuration::get('PS_LANG_DEFAULT')));  
/* Add a new product */
$object = new Product();
$object->price = 22;
$object->id_tax_rules_group = 0;
$object->name = 'test';
$object->id_manufacturer = 0;
$object->id_supplier = 0;
$object->quantity = 1;
$object->minimal_quantity = 1;
$object->additional_shipping_cost = 0; 
$object->wholesale_price = 0;
$object->ecotax = 0;
$object->width = 0;
$object->height = 0;
$object->depth = 0;
$object->weight = 0;
$object->out_of_stock = 0;
$object->active = 0;
$object->id_category_default = 18;
$object->category = 18;
$object->available_for_order = 0;
$object->show_price = 1;
$object->on_sale = 0;
$object->online_only = 1;
$object->meta_keywords = 'test';
if($object->save())
    $object->add();
echo "produit ajouté";

代碼工作正常,產品被添加到數據庫但沒有顯示在后台,有人有想法解決這個問題嗎?

name和meta關鍵字字段都是多語言數組。 如果您查看admin / tabs中的AdminImport.php,您將找到函數的定義:

private static function createMultiLangField($field) 

將此函數復制到您的模塊中,如果您通過將文本作為$field參數傳遞來調用它,則可以使用它為這些多語言字段創建合適的數組(它會將所有語言的值設置為您傳入的字符串) )。 您還應該為description_shortlink_rewrite字段設置默認值:

$object->description_short = array((int)(Configuration::get('PS_LANG_DEFAULT')) => '');

$object->link_rewrite = array((int)(Configuration::get('PS_LANG_DEFAULT')) => '');

第二點是,盡管您已設置默認類別,但您還必須將id_category顯式設置為數組,例如

$object->category=array(18);

我還認為你應該明確地設置類別:

$object->updateCategories($object->category, true);

它應該出現在目錄中。

您可以參考此示例,其中作者創建了導入過程的導入過程。

定制產品導入

正如您在下載后看到的那樣,ProductImporter.php是將id_lang添加到每個屬性中。

要使產品可用,您需要更改此:

$object->active = 1; // sets the product as active for shop

-rk-

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM