Экспорт товаров Minishop2 в CSV – без программирования

Задача: экспорт товаров в CSV с возможностью выгрузки всех опций или tv как захочется.
Сложность: 0 знаний в php :-)
Решение:
  1. Создаем новый ресурс: > опубликован > не показывать в меню > тип содержимого: HTML > не использовать HTML редактор > заморозить uri c .csv в конце.
  2. Вызываем msProducts с нужными настройками, у меня так:
    {'!msProducts'|snippet:[
        'hideContainers' => 1,
        'parents' => 3,
        'limit' => 150,
        'depth' => 3,
        'includeTV' => '1',
        'includeTVs' => 'video',
        'sortby' => 'menuindex',
        'sortdir' => 'DESC',
        'showLog' => 1,
        'tplFirst' => '@FILE chunks/export/first_row_drom.tpl',
        'tpl' => '@FILE chunks/export/eng_drom.tpl'
        ]}
  3. Сохраняем

Создаем три чанка:
1 (tplFirst) с первой строкой файла csv, которая будет содержать названия колонок:


2 для msGallery чтобы получить ссылки на изображения товара:


3 Чанк строки, просто все нужные поля товара в нужном порядке разделенные точкой с запятой:


Готово.
P.s. Файл принят сервисом и опубликован.
Konstantin
11 января 2018, 09:30
modx.pro
16
7 643
+5

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

Игорь Терентьев
11 января 2018, 16:55
+2
tplFirst — это чанк для оформления первого ресурса в результатах. Получается у вас не будет первого товара из выборки.
Лучше сделать с использованием tplWrapper.
    Николай Савин
    11 января 2018, 17:51
    0
    Такой подход подойдет для сотни товаров может. Дальше будут жесткие провисания, ведь генерация списка будет работать каждый раз заново.
    Ну и на нескольких тысячах товаров, этот способ совсем не будет работать, вызывая перегрузку (смотря какой сервер конечно)
      Pavel Zarubin
      12 января 2018, 03:17
      0
      Это из личных предположений или тестировали? Я вот ценники на одном сайте в pdf генерирую через pdoTools несколько тысяч товаров, никаких подвисаний, понимаю еще говорили бы о десятках тысяч, тогда еще можно и на слово поверить
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3