Magento 1.5, числовые SKU и productIdentifierType - PullRequest
2 голосов
/ 19 июля 2011

В Magento 1.5 доступ к каталогу API API ProductInfo из C #, как это работает с нечисловыми SKU:

catalogProductRequestAttributes fetchattrib = new catalogProductRequestAttributes();
fetchattrib.attributes = new string[] { "name", "description", "and_so_on"};
fetchattrib.additional_attributes = new string[] { "custom_attribs_go_here"};

string storeView = null;
string productIdentifierType = null;
catalogProductReturnEntity ret = m_magentoClient.catalogProductInfo(
    sessionId, sku, storeView, fetchattrib, productIdentifierType);

Но при использовании цифровых SKU я получаю сообщение об ошибке "Товар не существует".
Предположительно, это связано с тем, что Magento не может определить, передаете ли вы ему product_id или SKU. Установка для productIdentifierType 'sku' должна исправить это, теоретически, согласно всей документации, которую я могу найти:

...
string productIdentifierType = "sku";
...

Но это не исправляет.
На самом деле, кажется, что это еще хуже, Magento перестает искать нечисловой SKUS.
Таким образом, предположительно "sku" не является правильным значением для передачи.

У кого-нибудь есть идеи?

Ответы [ 2 ]

10 голосов
/ 06 июня 2012

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

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

Это прекрасно работает с Magento 1.4.x - 1.9.(Изменить: Спасибо Бретту за тестирование с 1.9)

Пример:

    catalogProductReturnEntity ret = m_magentoClient.catalogProductInfo(sessionId, sku+" ", storeView, fetchattrib, productIdentifierType); 
4 голосов
/ 21 октября 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 приложения / code / core / Mage / Catalog / Helper / Product.php

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

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

...