I guys i try to create a custom product from a module with this code :
$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é";
The code works fine, the product was added to the database but wasn’t display in the back office, someone have an idea to solve this problem ?
The name and meta keyword field are both multi-language arrays. If you look at AdminImport.php in admin/tabs you’ll find the definition for a function:
Copy this function into your module and you can use it to create a suitable array for these multi-language fields if you call it by passing your text as the
$fieldparameter (it will set the value for all languages to the string you pass in). You should also set a default value for thedescription_shortandlink_rewritefields:and
The second point is that although you’ve set the default category, you will also have to explicitly set id_category as an array e.g.
I also think you should then set the categories explicitly with:
It should then appear in the catalog.