Magento API:通过一次通话获取媒体产品/详细信息

时间:2013-07-16 15:26:24

标签: php api magento

我不知道是否甚至可以使用产品列表获取媒体列表而无需执行多个.call()的

multiCall()是一种选择吗?我必须从multiCall()中的第一个调用中返回值以插入到检索媒体的第二个中,但是我认为Magento的文档很差。

我是否必须创建自己的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);
?>

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,我想在获取订单列表时获得订单商品的更多信息。我能够通过创建一个带有观察者的模块来解决这个问题。每当加载订单模型时,我都可以执行$ order-&gt; setMyCustomValue($ orderItemInfo),当我执行order.list请求时,这些数据会显示出来。

查看Mage_Catalog_Model_Product_Api,基本产品信息(product_id,sku,name等)都在items方法(product.list调用)中进行了硬编码。 我看到的唯一方法是创建一个自定义模块,覆盖并扩展Mage_Catalog_Model_Product_Api。调用父项方法,然后将结果所需的数据(例如媒体网址)添加到其中并返回。

自定义API也可以使用,但这样做会更多。