Импорт в локализации

06 ноября 2019, 07:00

Импорт в локализации

Если вы делаете интернет-магазин и вам наужно связать импорт характеристик товара (созданных через ТВ параметры) в MiniShop2 через msImportExport, то ниже решение данного кейса:

Импорт категорий товаров

  • Создаем плагин, называем его для примера localizatorMSIECatUA
  • Во вкладке Системные события отмечаем событие msieOnAfterImportCategory
  • В коде плагина пишем:
<?php
/* @var modX $modx */
/* @var localizator $localizator */
$localizator = $modx->getService('localizator');
switch($modx->event->name) {
    case 'msieOnAfterImportCategory':
        // по набору параметров MSIE (можно посмотреть в phpmyadmin id настройки полей в msImportExport)
        if ($preset != 6) return;

        //$modx->log(xPDO::LOG_LEVEL_ERROR, 'srcData: '.print_r($srcData,1)."\ndestData:".print_r($destData,1)."\ndata:".print_r($data,1));
        //$modx->log(xPDO::LOG_LEVEL_ERROR, 'srcData: '.print_r($srcData,1));
        // Заполняешь Локализации из файла импорта
        $content = array();

        $content[] = array(
            'key' => 'ua',
            'resource_id' => $data['id'],
            'pagetitle' => $srcData[1], //колонка в файле
            'longtitle' => $srcData[1], //колонка в файле

        );

        foreach ($content as $arr)
        {
            if (!$loc = $modx->getObject('localizatorContent', array('key' => $arr['key'], 'resource_id' => $data['id']))){
                $loc = $modx->newObject('localizatorContent');
            }
            $loc->fromArray($arr);
            $loc->save();
        }

        $tvs = array();

        // Заполняешь ТВшки из файла импорта
        $tvs[] = array(
            'key' => 'ua',
            'tmplvarid' => 67, //id tvшки
            'contentid' => $data['id'],
            'value' => $srcData[3], // колонка в файле Excel
        );

        $tvs[] = array(
            'key' => 'ua',
            'tmplvarid' => 68, //id tvшки
            'contentid' => $data['id'],
            'value' => $srcData[4], //колонка в файле Excel
        );

        $tvs[] = array(
            'key' => 'ua',
            'tmplvarid' => 85, //id tvшки
            'contentid' => $data['id'],
            'value' => $srcData[22], //колонка в файле
        );

        $table = $modx->getTableName('locTemplateVarResource');
        foreach ($tvs as $arr)
        {
            //$modx->log(modX::LOG_LEVEL_ERROR, print_r($arr, 1));
            if (!$loctv = $modx->getObject('locTemplateVarResource', array('key' => $arr['key'], 'contentid' => $data['id'], 'tmplvarid' => $arr['tmplvarid']))){
                $loctv = $modx->newObject('locTemplateVarResource');
            }
            $loctv->fromArray($arr);
            $loctv->save();

        break;
    }
  • Активируем плагин
  • Переходим в msImportExport, Импорт, выбираем Импорт категорий товаров, Указываем настройку полей, указанную в файле
  • Запускаем импорт
  • По завершению у нас будут созданы Локализации и заполнены соответствующие поля TV.

Для импорта товаров, делаем копию плагина, вносим изменения в коде (меняем id настройки полей, прописываем соответствие полей TV/колонок Excel, меняем ключ локализации), а также во вкладке Системные события отмечаем событие msieOnAfterImportProduct



Предыдущий документ
Формирование sitemap
Следующий документ
Общее описание и настройка