3

presta 1.5.3で、Webサービスによる組み合わせの追加/更新方法に関する情報を読んで、試してみましたが、それでもその方法がわかりません。

誰かが私を助けることができますか?

4

2 に答える 2

1

Webservice を介して組み合わせを製品に割り当てることは、複数のステップからなる操作です (CSV インポートとは異なります)。

  • id_product を持つ製品が与えられた
  • product_options (BO属性名)を追加します。
  • product_option_values (BO属性値) を product_optionsに追加します
  • id_product を指定して組み合わせを追加する

DEBUG=true で PrestaShopWebservice を初期化することから始めます。

$api = new PrestaShopWebservice($psShopUrl, $psAuthKey, $psDebug);

XML を最初から作成する代わりに、必要なリソースのテンプレートを次のように取得します。

$sxml = $api->get(array('url' => $psShopUrl.'api/'.$resource.'?schema=blank'));

応答は、DOM よりも操作が簡単な SimpleXMLElement です。

注意:応答にはすべてのラッパー ノードが含まれており、要求で同じものを返送する必要があります。つまり、PSWebServiceLibrary はそれらを再作成しませ

<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<combination>
...
</combination>
</prestashop>

SXML 操作の例:

$schema = $api->get(array('url' => $psShopUrl.'api/product_options?schema=blank'));
$data = $schema->children()->children();
$data->is_color_group = false;
$data->group_type = $group_type;   // radio, select
$data->name->language[0] = 'attribute private name';
$data->public_name->language[0] = 'attribute public name';
$xml = $schema->asXML();    // all of it!
$ret = $api->add(array('resource' => 'product_options', 'postXml' => $xml));
$id_attribute_group = (int)$ret->children()->children()->id;    // save for next step

次に、product_option_valuesスキーマを取得し、データを設定しid_attribute_group、前のステップから取得します。等々。

更新は同じですが、 idgetでリソースを取得してから:edit

$sxml = $api->get(array('resource' => $resource, 'id' => $id));
...
$ret = $api->edit(array('resource' => $resource, 'id' => $id, 'putXml' => $xml));

リソース内のノードに複数のid値を追加するには、array_push ショートカットを使用できます。product_option_valuescombinations[]

$data->associations->product_option_values->product_option_values[]->id = 123;
$data->associations->product_option_values->product_option_values[]->id = 456;
于 2014-11-03T16:36:09.423 に答える