[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
4 499

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

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

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

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

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

                В настройках «ms2ym_availability_field» я указал свое поле «availability», у меня в нем остатки товаров, целые числа от 0 до 1000… Если «0» — нет в наличии.
                Андрей
                18 июля 2018, 16:35
                В компоненте есть настройка 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
                  Здравствуйте. Тоже столкнулся с отсутствием документации на этот параметр. Подскажите, если разобрались, что нужно писать в параметр, чтобы обработать нужное поле сниппетом перед передачей его в файл экспорта.
                    Андрей
                    21 февраля 2019, 08:51
                    Там вроде бы массив или json надо указывать, где ключ это название сниппета, а его значение это параметры. Я уже точно не помню. Я тогда просто свое решение написал для экспорта.
                      Андрей
                      21 февраля 2019, 09:12
                      Т.е. как то так?
                      { "mySnippet":  ["param1": "1111", "param2": "2222"]}
                      И в сниппете mySnippet будут доступны переменные param1 и param2? Как это проверить? Как указать какую переменную редактируем перед выдачей в файл экспорта? Может третий параметр в JSON должен быть? Не въеду никак (((
                        Евгений Шеронов
                        21 февраля 2019, 12:46
                        Здравствуйте!

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

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

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

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

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

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

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

                        Здесь только через 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
                          Приветствую. Благодарю за ответ. Нет это не я писал, я впервые столкнулся с модулем msYmarket.
                        Futuris
                        11 декабря 2020, 18:37
                        А подскажите пожалуйста как нужно правильно прописать в настройках компонента, чтобы доставка была
                        <delivery>false</delivery>
                        ?
                        Пробовал по-разному:delivery=>delivery_tv, [[+delivery_tv]] и просто — delivery_tv. Результат один — все равно выдает как по умолчанию —
                        <delivery>true</delivery>
                        .
                          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                          60