Как добавить префикс к offer id в плагине YandexMarket? Есть решение

Подскажите, для выгрузки товаров требуется уникальный offer_id, иначе товары с одинаковыми ID перезаписывают друг-друга. Речь идет не о яндекс маркете, а о простой выгрузке товаров через XML/YML: у наших партнеров есть и другие сайты, откуда они синхронизируют наличие, все это происходит через XML/YML, и товар с id=73 от одного поставщика, будет перезаписан нашим товаром.

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

Сейчас для товара, к примеру, id=73, а для артикула id=73s148. И туда, и туда нужно добавить префикс.

Более наглядно по ссылке.

1 ответ

  • 1
    Владислав Горлов Webasyst 10 ноября 2016 16:46 # Решение

    Это можно легко сделать, но без обеспечения совместимости с заказом в Яндекс Маркете (по крайней мере сейчас). Если вас устраивает такой вариант, то могу подсказать соответствующие настройки.

    • +1

      Да, самим маркетом не пользуемся.

      • +1

        тогда вам необходимо отредактировать файл wa-apps/shop/plugins/yandexmarket/lib/config/map.php найти на 357 строке формат id и изменить до такого вида:

         'id'              => array(
                    'type'        => 'fixed',
                    'name'        => 'идентификатор товарного предложения',
                    'description' => '',
                    'attribute'   => true,
                    'source'      => 'field:id',
                    'field'       => 'offer',
                    'format'       => 'prefix%s', //новая строка, где prefix - строка префикса (замените на свое значение)
                ),

        Эта модификация не устойчива к обновлениям (в следующих обновлениях сделаем возможность переопределять некоторые тонкие параметры экспорта на уровне настроек)

        • +1

          Спасибо, то что нужно!

        • +1

          Также пришлось добавить префиксы к ID категорий, это уже проделал в файле wa-apps/shop/plugins/yandexmarket/lib/actions/backend/shopYandexmarketPluginRun.controller.php на строке 1203-1206


          $category_xml->setAttribute('id', 'prefix-'.$category['id']);
               if ($category['parent_id']) {
                    $category_xml->setAttribute('parentId', 'prefix-'.$category['parent_id']);
               }

          Затем в файле wa-apps/shop/plugins/yandexmarket/lib/config/map.php на строке 412 привел к такому виду:


          'categoryId'      => array(
                      'type'        => 'fixed',
                      'name'        => 'Идентификатор категории товара ',
                      'description' => '(целое число не более 18 знаков). Товарное предложение может принадлежать только к одной категории.',
                      'source'      => 'field:category_id',
                      'format'      => 'prefix-%s',
                  ),

          Везде слово prefix заменить на свое собственное, слово должно быть одно и тоже, иначе товар не прикрепится к категории (id будут не совпадать).

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите