Так же столкнулся с проблемой выгрузки каталога в яндекс.маркет.
Покупать готовые решения и модули принципиально не хочу, так как считаю, что такие функции должны быть включены в стандартную редакцию Битрикса.
Править ядро тоже не будем, дабы не терять лицензию.
Многим известно, что Яндекс не пропускает товары с торговыми предложениями.
Причина одна - Каждому товарному предложению должна соответствовать отдельная страница сайта.
В битриксе есть настройки, в типах инфоблоков, якобы позволяющие отображать урлы самих SKU, но это увы не работает, по крайней мере стандартными методами без правки ядра.
Соответственно если хотим попасть в ЯМ, то выгружать мы должны только сам товар, а не его SKU.
В моем случае товар мебель, например офисное кресло модель№1, имеет 5 вариантов исполнения (цвет).
Стандартный функционал выгрузки в яндекс маркет, генерит YML как с простыми товарами, так и с SKU, причем в последнем случае у всех товарных предложений одна страница, и цена там может отображаться не та, в общем проверку не пройдем 100%.
Самый простой выход и Задача номер раз - это не выгружать SKU,
Это довольно просто - в настройках ИБ - добавляем новое свойство для Торговых предложений, например Я.Маркет - число или чекбокс, по умолчанию 0
В настройках дополнительных параметров экспорта - отбор по этому свойству, равно =1. Так как по умолчанию у всех SKU это свойство = 0, в YML они не попадают.
Переходим в Настройки-Настройки продукта-Настройки модулей-Торговый каталог
Значения параметров товаров по умолчанию так как товаров много и каждому делать персональные настройки смысла нет.[TABLE][TR][TD]Включить количественный учет[/TD][TD] пусто
[/TD][/TR][TR][TD]Разрешить покупку при отсутствии товара[/TD][TD] пусто
[/TD][/TR][/TABLE]при таких настройках у нас генерируются в прайс все товары. но тут возникает проблема у всех available="true" даже у товаров с доступным количеством 0
это логично так как у нас не включен количественный учет.
для яндекса это означает, что товар можно приехать купить в магазин либо заказать с доставкой в течение 2 дней.
Если включить количественный учет, то у товаров с доступным количеством более 0 будет available="true" , а у товаров с нулем будет available="false"
available="false" для яндекса - это статус под заказ с доставкой от 3 дней до 2 месяцев.
В моем случае, все товары из наличия доставляются в течение 3 дней, поэтому всем нужно прописать false, но на сайте хочется показать клиенту, что товары есть и даже отобразить остатки. Поэтому мы ставим всем товарам количество =0, а SKU - фактическое количество
Тут возникает еще одна проблема, если товар без SKU и его количество = 0, либо товар содержит SKU, но у всех количество = 0, то на странице товара пропадает кнопка корзины, что так же является нарушением и проверка яндекса не пропускает такой магазин.
Логично проставить в настройках Разрешить покупку при отсутствии товара.
Но после этого в YML у всех товаров снова available="true"
Суть дилеммы в том что для битрикса available="false" означает, что товара нет и возможно не будет, и сделать заказ на сайте невозможно, для яндекса available="false" - означает что товар можно заказать, но привезут его не быстро, в лучшем случае за 3 дня.
Проблему могли бы решить разработчики, настроив для SKU отдельные страницы, но они этого не делают, хотя с этим вопросом к ним не раз обращались.
Я решил проблему настроив скрипт под свои нужды, так называемый custom скрипта yandex_run.php
1) Создадим свой скрипт экспорта. Для этого возьмем из
/bitrix/modules/catalog/load/ два файла: yandex_run.php и
yandex_setup.php
2) Скопируем их в/bitrix/php_interface/include/catalog_export/ и переименуем, например new,
главное сохранить окончание _run.php, в нашем случае получится так:
new_run.php и new_setup.php
3) После этого в админке битрикса появится новый скрипт экспорта
Далее потребуются минимальные знания php, главное понимать логику процесса, с помощью поисковиков вы найдете что нужно поменять в скрипте, чтобы заработало как вам надо.
Приведу свой пример.
Мне необходимо, чтобы в YML у всех товаров было available="false",
при этом на сайте отображалось количество товара и количество его SKU
Чтобы на сайте можно было заказывать товар с количеством =0
1. Открываем в режиме правки php файл /bitrix/php_interface/include/catalog_export/new_run.php
2. Ищем слово available и первое что нам попадается это строка $arAcc['CATALOG_AVAILABLE'] = 'Y'; Это значение э напрямую влияет на свойство available в нашем YML, за это свойство отвечает переменная $str_AVAILABLE = ' available="'.('Y' == $arAcc['CATALOG_AVAILABLE'] ? 'true' : 'false').'"';
которая подставляет true если Y, и false если N
Мы просто находим и меняем все строки $arAcc['CATALOG_AVAILABLE'] = 'Y'; на $arAcc['CATALOG_AVAILABLE'] = 'N';
Далее скрипт проверяет на условия количества, вклчен ли кол.учет, разрешена ли покупка нулевого количества и все равно ставит N, но меня это уже не волнует. проблема решена.
Надеюсь я кому-нибудь помог данным постом. Все удачи
[URL=http://mebel-furnitura.ru/][IMG WIDTH=81 HEIGHT=56]http://mebel-furnitura.ru.opt-images.1c-bitrix-cdn.ru/upload/medialibrary/d19/d19d2c5079a9ced06b4e69468af1af0f.png?144014719111961[/IMG][/URL]
[URL=http://mebel-furnitura.ru/]Интернет-магазин офисной мебели Mebel-Furnitura.Ru[/URL]