Как добавить лимитную опцию в вызове Magento API - PullRequest
2 голосов
/ 29 апреля 2010

Я создаю веб-сервис для своего магазина. Я использую magento API для сбора списка товаров из магазина. Но в нем отображаются все 500 записей. И я хочу, чтобы 25 записей на странице. Что добавить в вызов API? Или какой фильтр будет применяться для этого?

// создаем мыльный объект $ proxy = новый SoapClient ('http://localhsot/magento/api/soap/?wsdl');

// create authorized session id using api user name and api key
// $sessionId = $proxy->login('apiUser', 'apiKey');
$sessionId = $proxy->login('test_admin', '12345678');

    $filters = array(


    );


 // Get list of product
$productlist = $proxy->call($sessionId, 'product.list', array($filters));

print_r($productlist ); 

Ответы [ 3 ]

0 голосов
/ 14 октября 2010

это не сработало, вы можете ограничить его по id, например:

$filters = array('id'=>array("gteq"=>1), 'id'=>array("lteq"=>1000));

чтобы ты мог добавить подкачку?

0 голосов
/ 24 апреля 2017

Я знаю, что это старый вопрос, но я боролся с этим. Я создал свою собственную конечную точку API SOAP, которая выполняет те же функции, что и функция catalogProductList по умолчанию, но имеет дополнительный параметр. Смотрите код ниже:

$collection = Mage::getModel('catalog/product')->getCollection()
    ->addStoreFilter($this->_getStoreId($store))
    ->addAttributeToSelect('name');
if($limit) {
    $collection->setOrder('updated_at', 'ASC');
    $collection->setPageSize($limit);
}
/** @var $apiHelper Mage_Api_Helper_Data */
$apiHelper = Mage::helper('api');
$filters = $apiHelper->parseFilters($filters, $this->_filtersMap);
try {
    foreach ($filters as $field => $value) {
        $collection->addFieldToFilter($field, $value);
    }
} catch (Mage_Core_Exception $e) {
    $this->_fault('filters_invalid', $e->getMessage());
}
$result = array();
foreach ($collection as $product) {
    $result[] = array(
        'product_id' => $product->getId(),
        'sku'        => $product->getSku(),
        'name'       => $product->getName(),
        'set'        => $product->getAttributeSetId(),
        'type'       => $product->getTypeId(),
        'category_ids' => $product->getCategoryIds(),
        'website_ids'  => $product->getWebsiteIds(),
        'updated_at'  => $product->getUpdatedAt(),
        'created_at'  => $product->getCreatedAt()
    );
}
return $result;

И оттуда мы отслеживаем последнее значение updated_at и используем его в качестве фильтра для получения следующих элементов [LIMIT]. По умолчанию updated_at и made_at отсутствуют в ответе, а список не упорядочен по update_at, поэтому я добавил это.

0 голосов
/ 03 мая 2010

Я не уверен в этом, но вы можете попробовать это, поскольку API работает с коллекциями, и это способ ограничить размер коллекции

$filters = array(
    'setPageSize' => 10
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...