質問

私はこのコードを使用してモジュールからカスタム製品を作成しようとしています。

$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_shortlink_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-

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top