MODX импорт и экспорт ресурсов и товаров miniShop2 при помощи msImportExport

MODX импорт и экспорт для miniShop2 при помощи msImportExport MODX Revo

Компонент msImportExport предназначен для импорта/экспорта товаров MiniShop 2 (не ниже 2.4.*) на сайт из/в CSV/XLSX, а также экспорт в Яндекс.Маркет. Начиная с версии 2, компонент стал поддерживать импорт и обычных ресурсов.

Компонент платный (на момент написания, стоит 3990 р). Ссылка на компонент и его документацию. Смотрите также как покупать и устанавливать платные пакеты с modstore.pro.

Компонент может работать и с товарными категориями — для информации, а показывать буду на примере товаров.

Работа с дополнением msImportExport v 1

Данная версия мне нравилась и нравится больше, но она не работает с обычными ресурсами, к стати вам могут установить и ее, для этого нужно написать в ТП плагина.

В прошлых уроках мы создали каталог с офертами на Minishop2 и спарсили контент с сайта конкурента, ну а сегодня импортируем его.

Перед тем как начать, рекомендую сначала выгрузить наши товары со всеми опциями и TV полями, чтобы подогнать наш спаршеный товар под нее — за одно и в дальнейшем пригодиться скорее всего.

Экспорт товаров на ПК

Для этого идем в Пакеты — msImportExport — Экспорт. На открывшейся странице переходим во вкладку «Настройка экспорта».

Идем во вкладку настройка экспорта

Проматываем немного страницу там увидите пункты: Добавлять описание полей и Абсолютные пути у изображений ставим Да.

Добавлять описание полей и Абсолютные пути у изображений

Еще немного проматываем вниз, там увидите заголовок «Поля для экспорта», там ниже выбираем Тип экспорта: Экспортировать товары, в Список настроек полей: выбираем «export».

Поля для экспорта

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

Теперь нужно добавить в этот список все нужные поля (и заменить ненужное), для этого напротив количество ставим к примеру 10 и нажимаем «Добавить».

Добавляем поля

Теперь отредактируем первые 3 строки и добавим новые, в первые строки рекомендую делать такими: id, Категория — parent, Показывать в категориях. А все остальное уже что нужно, в конечном итоге должно получиться что то типа такого.

Получившиеся настройки

и сохраняем настройки.

Теперь можно выгрузить EXCEL с наполненными товарами на ПК. Для этого переходим во вкладку «Экспорт товаров», выбираем:

  • Тип экспорта: Экспортировать товары.
  • Экспортировать в: XLSX Файл.
  • Список настроек полей: export (это то что сейчас на страивали).

И жмем по кнопке «Экспортировать».

Экспортируем товары

После этого компонент экспортирует все товары с их опциями и TV полями в excel. Сохраняем его

Сохраняем результаты

и открываем.

Пример таблицы с экспортом

Теперь в эту таблицу добавляем новые товары (я добавлю спаршенные в прошлом уроке — недостающие поля внесу вручную) и сохраняем.

Импорт товаров из Excel (наполнение minishop2)

Приключаемся в Импорт, идем на вкладку «Настройки импорта». Далее выставляем следующие настройки:

  • Ключ товара, по которому определяется его уникальность: Название — pagetitle.
  • Базовый родительский каталог: главный каталог товаров.
  • Шаблон для категорий: ваш шаблон который используется для категорий.
  • Игнорировать первую строку: Да (чтобы не импортировались названия столбцов.
  • Остальное по своему усмотрению.

Основные настройки импорта

Если все это делаете первый раз можете включить Режим отладки — тогда плагин импортирует только 1 товар, смотрите если все нормально то отключаем потом, либо в первый раз не добавляйте для импорта много товаров.

Сохраняем настройки и переходим во вкладку «Импорт» выбираем Тип импорта: Импорт товаров и загружаем нашу эксель таблицу с данными товаров.

Загружаем файл с данными товара

После загрузки файла появятся Настройка полей, нам нужно создать настройку с именем import. Щелкаем по шестеренке, в сплывающем окне пишем название «import», указываем Ключ товара, по которому определяется его уникальность: pagetitle и сохраняем.

Создаем настройку для импорта

После сохранения закрываем это окно всплывающее.

Далее в «Список настроек полей:» указываем нашу только что созданную конфигурацию, после чего сопоставляем поля правого столбца с левым и сохраняем настройки.

 

Сопоставляем поля и сохраняем настройки

Поле ID игнорирую т.к. импортирую новые товары — у них нет еще ID (данное поле в дальнейшем понадобиться для обновления товаров).

Да и эти все настройки делаются 1 раз (если сразу правильно сделаете) — так что не пугайтесь.

После сохранения пробегитесь по правим столбцам, если все нормально, можно начать импорт, нажав соответствующую кнопку.

Импортируем

Далее ждем пока дополнение импортирует все данные и покажет отчет.

Отчет об импорте

Обновление товаров из Excel

Хотите быстро внести данные в товары или хотите обновить какие-нибудь TV поля или опции? Без проблем! Экспортируем товары, правим, обратно импортируем, только в настройках импорта: Ключ товара, по которому определяется его уникальность: лучше выбрать ID (вместо pagetitle).

Работа с дополнением msImportExport v 2

Вторая версия типа более продвинутая, т.к. работает с ресурсами и некоторыми другими данными, это теперь не единый пакет, а пакет + дополнительные пакеты, которые выбираются при установке (или переустановке).

Выбираем допы при установке пакета

Так же пакет теперь не работает сразу после его установки, в отличии от 1й его версии. Нам теперь нужно производить доп манипуляции. Для этого идем в его системные настройки:

Системные настройки дополнения

Указываем там путь к php интерпретатору, можете спросить его в ТП хостинга, после этого сохраняете и нажимаете проверить. Если указали его правильно, нижние пункты обычно зеленеют.

Проверка правильности пути

Далее нам нужно, чтобы появились активные наблюдатели, для этого на стороне хостинга необходимо настроить cron.

Покажу как это делается на хостинге с cPanel:

В с cPanel идем в раздел Расширенный -> Задания cron.

Расширенный -> Задания cron

На открывшейся странице добавляем новое задание cron, выставляем периодичность раз в минуту, в поле команда прописываем: путь к php интерпретатору пробел, путь к скрипту из системных настроек плагина и жмем по кнопке «Добавить новое задание cron».

Создаем задание cron

Ждем минуту, и в настройках плагина снова жмем проверить:

У вас должен появится как минимум 1 наблюдатель, затем появятся и остальные:

Все супер

После этого можно работать, да к стати забыл сказать, если на вашем хостинге разрешены «демон» процессы (обычно разрешены), включите эту настройку (находится в самом низу).

Демон процессы

Если все настроили правильно, а активные наблюдатели не появляются или еще что то в этом духе, пишите в ТП плагина.

Ну а импорт и экспорт +- аналогичен предыдущей версии, думаю особого смыла описывать его нет.

Экспорт полей из MIGX

Для того, чтобы импортировать поля из MIGX, нужно написать свой плагин, вот пример кода:

<?php
/**
 * @var modX $modx
 * @var int $preset
 * @var string $section
 * @var array $fields
 * @var array $srcData
 * @var array $destData
 */
// Массив ID настроек полей для которых нужно использовать данный плагин
$presets = array(1,2);
if (!empty($presets) && !in_array($preset, $presets)) return;
switch ($modx->event->name) {
  case 'msieOnExportBeforePrepareRow':
    if ($section == 'data') {
      $keys = array_flip($fields);
      $tvs = array('tv.other_img','tv.tags'); // список TV полей через запятую которые следует преобразовать в строку (обязательно добавлять префикс tv.)
      foreach ($tvs as $tv) {
        if (!isset($keys[$tv]) || empty($srcData[$tv])) continue;
        $index = $keys[$tv];
        $destData[$index] = json_encode($srcData[$tv], JSON_UNESCAPED_UNICODE);
      }
      $modx->event->returnedValues['destData'] = $destData;
    }

  break;
}

И повесить его на событие msieOnExportBeforePrepareRow.

Вешаем плагин на событие msieOnExportBeforePrepareRow

Не забудьте в нем прописать свои TV поля (заменить мои). После этого в настройке пресета (я обычно создаю для них отдельный, с некоторыми общими полями, чтобы можно было потом объединить) на вкладке Опции -> Общие, в поле Пропустить разбор полей указываем их через запятую:

Пропуск разбора полей присета

После этого, вместо пустоты у вас должны появится данные.

Данные полей MIGX

Выводы

msImportExport отличный компонент который ускоряем рутинные операции (загрузка товаров или категорий, их обновление и т.д.) и он стоит своих денег. Поэтому рекомендую ее к покупке. Если вы серьёзно изначально подошли к разработке, проанализировали конкурентов, создали дерево сайта, собрали ключи и т.д. Тогда если откинуть верстку, то все категории и товары можно очень быстро выгрузить — а не тратить на это месяца.

Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( 4 оценки, среднее 3.5 из 5 )
Web-Revenue.ru
Добавить комментарий

  1. Ник

    Здравствуйте. Не могли бы вы сделать обзор, по настройке msImportExport 2.0.
    В документации только видео. С помощью которого многие вещи не получаются. А просматривать 50мин ради одной настройки из за которой не работает. Утомительное занятие.
    Заранее спасибо.

    Ответить
    1. Алексей автор

      Дописал про настройку версии 2

      Ответить
  2. Дмитрий

    Подскажите — есть прайс который обновляется раз в сутки
    Можно ли с помощью вашего компонента как то настроить чтобы он скрывал карточки (по артикулу) тех товаров которых НЕТ в прайсе? Заранее спасибо

    Ответить
    1. Алексей автор

      Компонент не мой, у него есть ТП) А так вроде можно, т.к. есть импорт через cron (на практике не испытывал).

      Ответить
  3. Аноним

    Опишите, пожалуйста, порядок обновления данных у товаров более подробно. В описании компонента говорится, что ни TV ни прочие опции не обновляются штатным методом. Да и при импорте с указанием ID в качестве ключа ничего хорошего не получается (создается новый товар)

    Ответить
    1. Голягин Алексей

      При импорте с указанием ID в качестве ключа ничего хорошего не получается (создается новый товар) — не создается новых товаров, постоянно так обновляю товары. Уникальный ключ выбирайте ID.

      Ответить