从一个模块中创建的Prestashop产品
问题描述:
我家伙,我尝试从一个模块中创建一个自定义的产品,这样的代码:从一个模块中创建的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é";
的代码工作正常,产品被添加到数据库中,但没有显示在后台,有人有一个想法来解决这个问题?
答
名称和meta关键字字段都是多语言数组。如果你在管理/标签看AdminImport.php你会发现一个函数的定义:
private static function createMultiLangField($field)
拷贝功能到你的模块,你可以用它来创建这些多语言领域一个合适的阵列如果通过传递文本作为$field
参数(它会将所有语言的值设置为传入的字符串)来调用它。你也应该设置为description_short
和link_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);
应该再出现在目录中。
答
使产品可用,您需要更改此:
$object->active = 1; // sets the product as active for shop
-rk-