3

複数の .call() を実行しなくても、製品リストを使用してメディア リストを取得できるかどうかさえわかりません。

multiCall() はどういうわけかオプションですか? その multiCall() の最初の呼び出しからの戻り値を、メディアを取得する 2 番目の呼び出しに挿入する必要がありますが、Magento のドキュメントは私の意見では貧弱です。

製品の詳細で画像の URL を返すなどの単純なことを行うために、独自の API 拡張機能を作成する必要がありますか?

現時点で私が持っているものは次のとおりです。

<?php
$soap = new SoapClient('http://hello-magento.local/magento/api/soap?wsdl');
$session_id = $soap->login('username', 'password');

$product_list = $soap->call($session_id, 'product.list');

$products = array();

foreach($product_list as $product_item)
{
    $product_id = $product_item['product_id'];
    $product_image = $soap->call($session_id, 'catalog_product_attribute_media.list', $product_id);

    $product_details = array();
    $product_details['id']      = $product_id;
    $product_details['name']    = $product_item['name'];
    $product_details['image']   = $product_image[0]['url'];

    $products['products'][] = $product_details;
}

$soap->endSession($session_id);

echo json_encode($products);
?>
4

1 に答える 1

1

注文のリストを取得するときに、注文アイテムに関する詳細情報を取得したいという同様の問題がありました。オブザーバーを使用してモジュールを作成することで、これを解決できました。注文モデルがロードされるたびに $order->setMyCustomValue($orderItemInfo) を実行でき、order.list リクエストを実行するとこのデータが表示されます。

Mage_Catalog_Model_Product_Api を見ると、基本的な製品情報 (product_id、sku、name など) はすべて items メソッド (product.list が呼び出す) にハードコーディングされています。これを回避する唯一の方法は、Mage_Catalog_Model_Product_Api を上書きして拡張するカスタム モジュールを作成することです。親項目メソッドを呼び出し、必要なデータ (メディア URL など) を結果に追加して返します。

カスタム API も機能しますが、もう少し手間がかかります。

于 2013-11-08T23:09:43.853 に答える