Создать продукт из модуля в preashashop

Я, ребята, я пытаюсь создать пользовательский продукт из модуля с помощью этого кода:

$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é"; 

Код работает отлично, продукт был добавлен в базу данных, но не отображался в бэк-офисе, у кого-то есть идея решить эту проблему?

Поле имени и метакласса – это многоязычные массивы. Если вы посмотрите на AdminImport.php в admin / tabs, вы найдете определение для функции:

 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); 

Затем он должен появиться в каталоге.

Вы можете обратиться к этому примеру, когда автор создал процедуру импорта для импорта продуктов.

Импорт пользовательских товаров

Как вы можете видеть после загрузки ProductImporter.php, это то, что id_lang добавляется к каждому свойству.

чтобы сделать продукт доступным, вам необходимо изменить это:

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

-rk-