[msYmarket 0.1.0] Поддержка любых ИМ и любых полей

В новой версии компонент научился работать с любыми полями ресурсов и подставлять их в любые необходимые тэги. Помимо этого, компонент стал универсальным — он теперь работает с любыми видами интернет-магазинов, если товары являются простыми ресурсами. Исключение здесь одно — пока не поддерживаются MIGX параметры.

Полное описание в документации, здесь же рассмотрим лишь основные моменты.


Любые интернет-магазины

Если выставить настройку ms2ym_ms2_use в «Нет», при выборке ресурсов не будут подставляться ограничения по class_key (msProduct, msCategory). В выборку попадут все ресурсы (и в категории, и в товары). Чтобы этого не произошло, обязательно необходимо задать в настройках ms2ym_cat_tpls и ms2ym_good_tpls список шаблонов для категорий и товаров.
Данные настройки хорошо дополняют выборку и при использовании MS2.

В целях совместимости с первой версией, по умолчанию списки шаблонов пусты, а использование MS2 включено.

Произвольные поля и тэги

К изначально реализованному способу ввода соответствия TV-полей и YML-тэгов добавлена возможность указать в таком же формате список соответствия основных полей ресурса и YML-тэгов.

Поскольку формат YML позволяет, кроме обычных тэгов, использовать дополнительные вида

<param name="Вес" unit="кг" type="Брутто">5.00</param>
, формат списка соответствий был расширен. Приведенная выше запись будет иметь следующий вид в списке:

weight=>param.Вес:unit="кг":type="Брутто"
Получилось сложно. Возможно, в будущих версиях будет введен более простой способ.

Список полей по умолчанию повторяет те поля и тэги, которые были жестко зашиты в коде первой версии.

Чего нет при отсутствии MS2

Если MS2 не установлен, список категорий в админке для выборочной выгрузки недоступен, а так же не имеют смысла фильтры по производителю, тэгам, цвету. Выгрузка в таком случае ограничивается только списками шаблонов.

========
Если вдруг что-то упущено в данной версии — пишите в поддержку, оперативно поправим.
Обновление уже доступно в магазине.

Обновлено.


С 2018 года поддержкой компонента занимается Евгений Шеронов @Евгений Шеронов.
Воеводский Михаил
15 июля 2016, 07:21
modx.pro
3 746
+5

Комментарии: 60

Михаил
09 ноября 2016, 10:57
0
А как вывести галерею MS2 в goods.yml ????
    Воеводский Михаил
    09 ноября 2016, 11:06
    0
    Можно вывести только первую картинку, галерею целиком — нет. Насколько это важно?
    Михаил
    09 ноября 2016, 11:08
    0
    Оч важно. ЗАказчик заказал. ЗАшёл в тупик…
    Михаил
    09 ноября 2016, 11:12
    0
    Сниппет покупал заказчик со своего аккаунта. В моём аккаунте к сожалению нет раздела поддержки с этим сниппетом… Это очень не удобно кстати…
    Михаил
    09 ноября 2016, 11:20
    0
    Требуется вывести картинки из галереи MS2 в файл m-jolie.ru/core/goods.yml Щаз выводится тока первая картинка, а в магазине у товаров есть несколько картинок.

      Воеводский Михаил
      09 ноября 2016, 11:57
      0
      Должно быть несколько тэгов picture?

      ЗЫ: нажимайте «Ответить» под комментарием.
        Михаил
        09 ноября 2016, 12:03
        0
        Да должно быть несколько. Тегов picture
          Воеводский Михаил
          09 ноября 2016, 12:34
          0
          На следующей неделе добавлю, обновление будет доступно в магазине.
            Михаил
            09 ноября 2016, 12:35
            0
            Ок спасибо! :)
      Михаил
      09 ноября 2016, 16:56
      0
      Ещё вопрос. В листе yml в тег description мне нужно вывести content из modx. Пишу так в настройках content=>description. Но ни чего не выводит почему то. Как его вывести тогда ???
        Воеводский Михаил
        09 ноября 2016, 18:57
        0
        content не выбирается из БД. В обновлении добавлю в выборку.
          Михаил
          29 ноября 2016, 16:22
          0
          Большое спасибо за выпущенное обновление…
          Есть небольшая недоработка… Адреса на дополнительные картинки выводятся с относительным путём…
          Для яндкс маркета нужны абсолюдные…
      Николай
      12 мая 2017, 17:59
      0
      А что если категории на сайте не совпадают с категориями на яндекс маркете. Хочется с помощью дополнительных категорий товаров (таблица modx_ms2_product_categories) создать ещё один каталог на сайте, который будет предназначен исключительно для целей выгрузки на яндекс-маркет. Но в таком случае выгрузка товаров не происходит. Выгружаются только товары, категории которых являются их parents. А дополнительные категории не учитываются… Надеюсь понятно, что я написал
        Воеводский Михаил
        12 мая 2017, 19:51
        0
        Понятно. Доработка возможна и поставлена в очередь, но выполнена будет не в скором времени.
          Николай
          12 мая 2017, 20:05
          0
          Будем ждать… в любом случае полезная опция, ещё не раз пригодится. Второй раз уже сталкиваюсь с этим.
            Александр
            07 июня 2017, 20:28
            0
            Здравствуйте.
            Скажите, пожалуйста, доработка ещё не готова?
            И ещё вопрос. У меня используется компонент msOptionsPrice2. Как с ним будет работать выгрузка?
              Воеводский Михаил
              07 июня 2017, 20:55
              0
              Не готова.
              С msOptionsPrice2 не взаимодействует. Если требуется, опишите в поддержке, каким образом должны подхватываться модификации товаров. Посмотрю, возможно ли добавить.
                Александр
                07 июня 2017, 21:41
                0
                Ну каждая модификация может представлять из себя отдельный товар. Это, видимо, индивидуально. Так как если у модификации есть свой цвет, то это другой товар, а если нет, то тот же самый. Если модификация включена и остаток больше 0, то товар в наличии. Только не знаю, как использовать остальные картинки у товара, ведь они все общие для всех модификаций. Возможно просто не добавлять их к товару в маркете.
          Ishvan
          13 мая 2017, 15:31
          0
          Он будет работать если товары на ресурсах?
            Воеводский Михаил
            13 мая 2017, 16:25
            0
            Да, должен. В настройках отключите использование ms2. Если ещё будут вопросы — пишите в поддержку. Хоть работа без ms2 и сделана давно, ещё не было таких обращений.
              Ishvan
              13 мая 2017, 16:29
              0
              Благодарю. Тогда скоро преобрету.ю
                Воеводский Михаил
                07 июня 2017, 20:54
                0
                Получилось?
                  Ishvan
                  07 июня 2017, 21:20
                  0
                  Пока еще не делал.
                    Ishvan
                    06 августа 2017, 09:36
                    0
                    Приобрел и установил, но при запуске пишет что требуется установка минишоп2
                      Воеводский Михаил
                      06 августа 2017, 12:24
                      +1
                      Отправьте в поддержку доступ в админку.
                        Ishvan
                        06 августа 2017, 13:11
                        0
                        сделал
                          Воеводский Михаил
                          07 августа 2017, 00:10
                          0
                          Выпущено обновление, теперь MS2 не требуется для работы раздела в админке.
                          Но, поскольку настройки полей по умолчанию заточены под ms2, внимательно настройте соответствия полей тэгам.
              Wmaster
              07 июня 2017, 21:47
              0
              Добрый день! Яндекс-маркет скоро перестанет принимать одежду без размера. А несколько размеров для одного товара надо как-то объединять по инструкции. Для информации:
              Если существует несколько товарных предложений, которые являются цвето-размерными вариациями одной модели, то в YML-файле необходимо создавать описание каждого варианта в отдельном элементе — в одном размере и в одном цвете.

              Для корректного соотнесения всех вариантов с одной моделью необходимо в описании каждого товарного предложения использовать атрибут group_id. Значение атрибута должно быть целым числом, максимум 9 разрядов. Для всех предложений, которые необходимо отнести к одной модели, должно быть указано одинаковое значение атрибута group_id. При этом недопустимо указывать такое же значение для предложений, не относящихся к этой модели. Например, если продаваемое вами платье доступно в 3 различных цветах и каждый цвет при этом доступен в 4 размерах, то вы должны составить описания 12 товарных предложений, указывая в каждом из них одинаковый group_id.
              https://yandex.ru/support/partnermarket/guides/clothes.html#h4
                Сергей
                Сергей
                05 августа 2017, 12:29
                0
                Подскажите, для покупки платных модулей ключ создавать для dev.site.ru или для site.ru? В ХЭЛПе это как-то двояко озвучено.
                Олег
                02 ноября 2017, 00:16
                0
                Пара вопросов перед покупкой:
                Подскажите, в настройках есть поле «самовывоз»? В моем случае принципиально всем товарам прописать «нет» в доставке и прописать всем самовывоз.
                И еще вопрос — есть ли возможность выгружать только товары, у которых отмечен чекбокс availability (в наличии). Вроде как яндекс требует, чтобы все выгружаемые товары были в наличии.
                  АндрейЧ
                  05 апреля 2018, 11:34
                  0
                  Добрый день. Подскажите пожалуйста, в каком файле изменить код… чтобы в YML файл наличие отдавалось «True» если значение поля [[+availability]] больше нуля?
                  … и соотв. «False» если значение 0.

                  В настройках «ms2ym_availability_field» я указал свое поле «availability», у меня в нем остатки товаров, целые числа от 0 до 1000… Если «0» — нет в наличии.
                  Андрей
                  18 июля 2018, 16:35
                  0
                  В компоненте есть настройка ms2ym_snippets, во-первых нет документации для нее, но это ладно. Во-вторых в коде есть кусок для обработки этой настройки:

                  foreach ($this->ymlConfig->snippets as $snippet => $params) {
                      $yml .= $this->runSnippet($snippet, $params, $v) . "\n";
                  }

                  Как получить третий параметр $v в сниппете, ведь runSnippet принимает только 2 параметра?

                  Пока что поправил исходник так
                  foreach ($this->ymlConfig->snippets as $snippet => $params) {
                      $params = array_merge($params, $v);
                      $yml .= $this->runSnippet($snippet, $params, $v) . "\n";
                  }
                    Андрей
                    20 февраля 2019, 18:32
                    0
                    Здравствуйте. Тоже столкнулся с отсутствием документации на этот параметр. Подскажите, если разобрались, что нужно писать в параметр, чтобы обработать нужное поле сниппетом перед передачей его в файл экспорта.
                      Андрей
                      21 февраля 2019, 08:51
                      0
                      Там вроде бы массив или json надо указывать, где ключ это название сниппета, а его значение это параметры. Я уже точно не помню. Я тогда просто свое решение написал для экспорта.
                        Андрей
                        21 февраля 2019, 09:12
                        0
                        Т.е. как то так?
                        { "mySnippet":  ["param1": "1111", "param2": "2222"]}
                        И в сниппете mySnippet будут доступны переменные param1 и param2? Как это проверить? Как указать какую переменную редактируем перед выдачей в файл экспорта? Может третий параметр в JSON должен быть? Не въеду никак (((
                          Евгений Шеронов
                          21 февраля 2019, 12:46
                          0
                          Здравствуйте!

                          Да, Андрей выше правильно написал, что нужно подправить исходники (если не править исходники, то значения товара в параметры не попадут).

                          И правильнее написать json так:
                          {"mySnippet": {"param1": "1111", "param2": "2222"}}
                          И этим массивом нужно вернуть xml строку:
                          <param name="Параметр">Значение</param>
                          Или любую другую валидную сущность для xml)

                          В общем эта настройка не prepareSnippet, а просто для добавления каких-то новых данных, повлиять или изменить через сниппет другие значения не выйдет, даже поправив исходники методом выше.
                    exist17
                    15 июля 2019, 13:16
                    0
                    Два вопроса перед покупкой:
                    1. На сайте 15 000 товаров MS2, бодрый shared-хостинг, но все же не выделенный сервер. Компонент справится с выгрузкой 15К товаров за раз?
                    2. Есть ли возможность запуска по расписанию (Cron)
                    Evgeny
                    16 августа 2019, 16:38
                    0
                    Как вывести все картинки из галереи товара ms2? Вывожу
                    image=>picture;
                    выводится только первое фото. Отметка «Добавлять все изображения в выборку» стоит.
                      Евгений Шеронов
                      18 августа 2019, 21:50
                      0
                      Вообще, после активации настройки ms2ym_include_all_images при следующей генерации файла изображения должны были подтянуться.

                      Если этого не произошло — напишите в поддержку с указанием доступов.
                      А для галереи товара случаем не ms2Gallery используете?
                        Evgeny
                        20 августа 2019, 15:29
                        0
                        Прошу прощения за неверный ответ. Использую msGallery.
                          Евгений Шеронов
                          20 августа 2019, 16:12
                          0
                          Тогда должно всё работать.

                          Когда-то Василий анонсировал поддержку галереи ms2Gallery вместо стандартной msGallery — вот с ней бы вряд-ли работало.

                          Поддержку можно продлить и написать уже там доступы.
                            Evgeny
                            20 августа 2019, 18:27
                            0
                            Подскажите как продлить?
                    Evgeny
                    20 августа 2019, 07:37
                    0
                    Да. ms2Gallery. Тех.поддержка кончилась.
                      Андрей
                      20 августа 2019, 15:05
                      0
                      Можно ли настроить автообновление?
                        Евгений Шеронов
                        20 августа 2019, 16:10
                        0
                        Да, поставьте на крон файл core/components/yandexmarket/cron/cron.yandexmarket.php
                          Андрей
                          20 августа 2019, 16:11
                          0
                          Спасибо. А еще такой момент. Можно ли выгрузить не одну а несколько фото товара?
                            Евгений Шеронов
                            20 августа 2019, 16:12
                            0
                            Несколькими сообщениями выше обсуждаем))

                            Включите настройку ms2ym_include_all_images и перегенерируйте файл.
                              Андрей
                              20 августа 2019, 16:16
                              0
                              Что же за напасть такая с невнимательностью)) Спасибо)))
                        Юрий Ханжин
                        31 октября 2020, 11:55
                        0
                        Добрый день. Вопрос по content=>description. В контенте стоят дополнительные поля такие как [[+article]] и [[*pagetitle]]. Как заставить их обрабатываться? На данный момент выводится так: (Вы можете купить у нас [[*pagetitle]] [[+article]])
                          Евгений Шеронов
                          02 ноября 2020, 15:05
                          0
                          Здравствуйте, Вы вроде уже писали мне?

                          Здесь только через prepareSnippet сможете сделать замену нужных Вам тегов.

                          Также, если есть какие-то теги или стили у html-тегов, то их нужно подчистить.
                          Для этого должен быть установлен Jevix.

                          Вот пример сниппета prepareMarketDescription, который сделает то, что нужно.
                          Добавьте его и укажите название в настройку ms2ym_prepare_snippet.

                          <?php
                          if(!empty($fields['description'])) {
                              //масссив для замен 
                              $replaces = [
                                  '[[*pagetitle]]' => $product['pagetitle'],
                                  '[[+article]]'   => $product['article']
                              ];
                              
                              // все доступные поля можно посмотреть в логе расскоментировав две строки ниже:
                              // $modx->log(1,'Поля в XML: '.print_r($fields,1));
                              // $modx->log(1,'Поля товара: '.print_r($product,1));
                              
                              $fields['description'] = $modx->runSnippet('Jevix',[
                                  'input'=> str_replace(array_keys($replaces), array_values($replaces), $fields['description']),
                                  'cfgAllowTags'=>'h3,ul,ol,li,p,br',
                                  'cfgSetAutoLinkMode'=>0,
                                  'cfgAllowTagParams'=>'{}',
                                  'cfgSetTagNoAutoBr' => 'ul,ol',
                                  'cfgSetTagChilds' => '[["ul",["li"],false,true],["ol",["li"],false,true]]',
                                  'cfgSetTagParamDefault' => '[]',
                                  'cfgSetTagParamsRequired' => '{}',
                                  'cfgSetTagNoTypography' => '',
                                  'cfgSetTagPreformatted' => '',
                                  'cfgSetTagShort' => 'br'
                              ]);
                          }
                          
                          return $fields;
                            Юрий Ханжин
                            03 ноября 2020, 08:55
                            0
                            Приветствую. Благодарю за ответ. Нет это не я писал, я впервые столкнулся с модулем msYmarket.
                          Futuris
                          11 декабря 2020, 18:37
                          0
                          А подскажите пожалуйста как нужно правильно прописать в настройках компонента, чтобы доставка была
                          <delivery>false</delivery>
                          ?
                          Пробовал по-разному:delivery=>delivery_tv, [[+delivery_tv]] и просто — delivery_tv. Результат один — все равно выдает как по умолчанию —
                          <delivery>true</delivery>
                          .
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                            60