Я, ребята, я пытаюсь создать пользовательский продукт из модуля с помощью этого кода:
$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-