Затираются tv при импорте из csv

Есть 30 tv-шек (tv1 — tv30). При первом импорте все tv заливаются отлично.
При обновлении прайса, если какую либо колонку с tv удалить из csv, то после обновления эта tv затирается.

Т.е. получается, если нужно обновить только tv5 — то в csv нужно указывать все tv1 — tv30. Иначе все затрется.

Василий, это такая особенность импорта или баг?
Rootiys
06 марта 2014, 14:11
modx.pro
1 280
0

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

Aртур Чикин
07 марта 2014, 15:20
0
При повторном импорте ты указываешь что TV нужно перезаписать, но так как при перезаписи ты отдаешь 1-5 tv заполненных, а остальные без значения вот и импорт перезаписывает их на пустые значения. Тебе стоит подумать над хаком который будет
Если значение tv == 0 не перезаписывать tv.
    Rootiys
    07 марта 2014, 18:39
    0
    При перезаписи в csv нет tv5, например. А есть только tv1 — tv4. Т.е. tv5 не пустое, а вообще колонки нет.
    После перезаписи tv5 затирается.
    По логике, импорт не должен перезаписывать tv, которые не указаны в csv!
Igor Ivanov
24 декабря 2016, 15:44
0
Ха, 30 tv, фигня. Вот мне достался сайт с 350 tv, и вчера наступил на те же грабли. При обновлении с помощью msImportExport значения одной tv, остальные затерлись до дыр, стали пустыми. Судя по ответу автора msImportExport на обращение через личный кабинет Modstore.pro, решения до сих пор не найдено. Очень жаль, это серьезный недостаток в функционале любимой MODX.
    Дмитрий Суворов
    24 декабря 2016, 16:24
    0
    Почему используете TV вместо опций в miniShop2?
      Igor Ivanov
      24 декабря 2016, 16:32
      0
      Ключевое слово здесь «достался». Так исторически сложилось, делали другие разработчики, почему они выбрали такой путь, мне неведомо.
        Дмитрий Суворов
        24 декабря 2016, 16:49
        1
        0
        как вариант (ибо другого пути у вас нет) необходимо все же перейти на опции, так как они не затираются. А чтобы перенести данные из TV в опции — можно использовать плагин. Если мне не изменяет память, если его повесить на событие OnDocFormSave, то при прогоне импорта он сработает до того, как очистятся TV, и данные перенесутся — но я не уверен. Вот сам плагин:

        <?php
        if($resource->class_key == 'msProduct' && $modx->event->name == 'OnDocFormSave'){
        	$soputId = $resource->getTVValue('soput-product');
        	
        	if ($soputId == '') {
        	    $soputId2 = $resource->get('dop-products');
        	    $resource->setTVValue('soput-product', $soputId2);
        	    $resource->save();
        	} else {
                $resource->set('dop-products', $soputId);
        	    $resource->save();
        	}
        }

        Как-то было дело я с этим тоже сталкивался, правда там было 2 TV)
          Igor Ivanov
          25 декабря 2016, 09:39
          0
          С двумя tv это выход, с 350-ю надо очень хорошо подумать, что бы решится на такое. К тому же опции нельзя назначать на категории верхнего уровня, что бы они стали доступны у товаров в подкатегориях. Если сейчас tv назначаются 3-м шаблонам, то опции придется раскидывать между 443-мя категориями. И переобучать контент-менеджеров администрированию всего этого.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    9