Вторая проблема с модулем Яндекс Маркет, которую я тоже устранял локальной заплаткой, заключается в том, что если в модуле Яндекса Маркета использовать опции указания наличия розничных точек продаж и возможности самовывоза, то файл не проходит валидацию на стороне Яндекс Маркет.
Определена кодировка: utf-8 (строка 0, столбец 0) Дата из файла: 2014-03-22 17:27 (строка 3, столбец 38) Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Element 'store' is not valid for content model: '(url?,buyurl?,price,wprice?,currencyId,xCategory?,categoryId+,market_category?,picture*,store?,pickup?,delivery?,deliveryIncluded?,local_delivery_cost?,orderingTime?,((typePrefix?,vendor,vendorCode?,model,((provider,tarifplan?))?)|(author?,name,publisher?,series?,year?,ISBN?,volume?,part?,language?,binding?,page_extent?,table_of_contents?)|(author?,name,publisher?,series?,year?,ISBN?,volume?,part?,language?,table_of_contents?,performed_by?,performance_type?,storage?,format?,recording_length?)|(artist?,title,year?,media?,starring?,director?,originalName?,country?)|(worldRegion?,country?,region?,days,dataTour*,name,hotel_stars?,room?,meal?,included,transport,price_min?,price_max?,options?)|(name,place,hall?,hall_part?,date,is_premiere?,is_kids?)|(name,vendor?,vendorCode?)),aliases?,additional*,description?,sales_notes?,promo?,manufacturer_warranty?,seller_warranty?,country_of_origin?,downloadable?,adult?,age?,barcode*,cpa?,fee?,rec?,expiry?,weight?,dimensions?,param*,related_offer*)' (строка 3, столбец 16004)
Проблема в том, что модуль Яндекс Маркета в этом случае формирует неправильную последовательность полей в XML файле.
Фикс заключается в изменении порядка генерации полей в файле: \YandexMarket\Model\Processor\Offer.php
Поля store, pickup, delivery должны идти сразу за полем images.
if (!is_null($this->getImage())) {
$result['picture'] =
df_helper()->yandexMarket()->preprocessUrl(
$this->getProduct()->getMediaConfig()->getMediaUrl(
$this->getImage()
)
)
;
}
if ($this->getSettings()->general()->hasPointsOfSale()) {
$result =
array_merge(
$result
,array(
'store' =>
df_output()->convertBooleanToString(
$this->getProduct()->isSalable()
)
,'pickup' =>
df_output()->convertBooleanToString(
$this->getSettings()->general()->isPickupAvailable()
)
,'delivery' =>
df_output()->convertBooleanToString(
true
)
)
)
;
}

Вход
Регистрация
Помощь
Тема закрыта

