Экспорт товаров 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. Файл принят сервисом и опубликован.
11 января 2018, 12:30    Konstantin   
13    289 +5

Комментарии (3)

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