質問
私はこのコードを使用してモジュールからカスタム製品を作成しようとしています。
$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を管理/タブで見ると、関数の定義が見つかります。
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')) => '');
2番目のポイントは、デフォルトのカテゴリを設定しているが、Arrayとして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-
所属していません StackOverflow