У меня модуль Яндекс.Маркет неправильно упорядочивает поля в файле YML

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
  • Тема закрыта
#1 Ярослав Бровин
  • Группа: Клиент
  • Сообщений: 81
  • Регистрация: 21.06.2013

22.03.2014 16:33

Добрый день,

Вторая проблема с модулем Яндекс Маркет, которую я тоже устранял локальной заплаткой, заключается в том, что если в модуле Яндекса Маркета использовать опции указания наличия розничных точек продаж и возможности самовывоза, то файл не проходит валидацию на стороне Яндекс Маркет.
Прикрепленное изображение: screenshot-01.jpg
Определена кодировка: 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
							)
					)
				)
			;
		}


#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8885
  • Регистрация: 20.02.2010

06.04.2014 19:44

Исправлено в версии 2.31.1.

Поделиться темой: