3

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

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

我是否必须创建自己的 API 扩展来做一些简单的事情,比如返回带有产品详细信息的图片 url?

这是我目前所拥有的:

<?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、名称等)都硬编码在 items 方法(product.list 调用)中。我看到的唯一方法是创建一个覆盖和扩展 Mage_Catalog_Model_Product_Api 的自定义模块。调用父项方法,然后将您需要的数据添加到结果中(例如媒体 url)并返回。

自定义 API 也可以工作,但需要做更多工作。

于 2013-11-08T23:09:43.853 回答