Обновление продукта Magento 1.6.0 API не работает при использовании числового SKU - PullRequest
2 голосов
/ 20 октября 2011

Все мои продукты используют числовые SKU, но, кажется, это вызывает проблемы при использовании API для обновления продукта.

В соответствии с API doc , вы можете использовать либо ID продукта, либо SKU.

Аргументы:

  • смешанный продукт - ID продукта или Sku
  • array productData - массив значений атрибутов
  • смешанное представление магазина - идентификатор или код магазина (необязательно)

Но полностью числовые SKU, похоже, не работают. Я убежден, что где-то есть код, который проверяет, является ли значение числовым, и предполагает, что я должен предоставить идентификатор продукта.

Я также читал, что вы можете передать 4-й параметр, чтобы указать, что вы используете sku, но это тоже не сработало.

$proxy->call($sessionId, 'product.update', array('123456', array('name'=>'Updated name1'), null, 'sku') );

Кто-нибудь знает, как заставить это работать?

Ответы [ 2 ]

3 голосов
/ 15 августа 2012

В похожем вопросе TurmDrummer опубликовал еще один обходной путь: https://stackoverflow.com/a/10915276/1598270

Существует обходной путь для чистого числового или смешанного SKU, который работает тихо хорошо для меня.

Просто добавьте пробел в конце вашего SKU. Magento будет интерпретировать значение как SKU, потому что пробел не является числовым. Internaly Magento урезает пробел позже

Это отлично работает с Magento 1.4.x - 1.7.

Мне понравилось это решение в качестве обходного пути, потому что вы не изменяете какие-либо файлы кода ядра, чего я стараюсь избегать.

3 голосов
/ 20 октября 2011

Короткий ответ: где-то есть ошибка, препятствующая правильной установке последнего параметра product.update (или, возможно, Varien еще не реализовал его), что также создает проблему для метода product.info.

Быстрый обходной путь (если вы не против потерять возможность обновления по идентификатору) - просто установите $identifierType в методе Product API update()):

In app/code/core/Mage/Catalog/Model/Product/Api.php l.198

public function update($productId, $productData, $store = null, $identifierType = 'sku')

И, наконец, загрузите продукт в условии if ($ idBySku) метода getProduct () около l.427 в app / code / core / Mage / Catalog / Helper / Product.php

$productId = $idBySku;
$product->load($productId);

Это немного выдумки.Я буду искать лучший обходной путь, как переопределение;в противном случае, возможно, кто-то другой может опубликовать лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...