Затираются tv при импорте из csv
Есть 30 tv-шек (tv1 — tv30). При первом импорте все tv заливаются отлично.
При обновлении прайса, если какую либо колонку с tv удалить из csv, то после обновления эта tv затирается.
Т.е. получается, если нужно обновить только tv5 — то в csv нужно указывать все tv1 — tv30. Иначе все затрется.
Василий, это такая особенность импорта или баг?
При обновлении прайса, если какую либо колонку с tv удалить из csv, то после обновления эта tv затирается.
Т.е. получается, если нужно обновить только tv5 — то в csv нужно указывать все tv1 — tv30. Иначе все затрется.
Василий, это такая особенность импорта или баг?
Комментарии: 9
При повторном импорте ты указываешь что TV нужно перезаписать, но так как при перезаписи ты отдаешь 1-5 tv заполненных, а остальные без значения вот и импорт перезаписывает их на пустые значения. Тебе стоит подумать над хаком который будет
Если значение tv == 0 не перезаписывать tv.
При перезаписи в csv нет tv5, например. А есть только tv1 — tv4. Т.е. tv5 не пустое, а вообще колонки нет.
После перезаписи tv5 затирается.
По логике, импорт не должен перезаписывать tv, которые не указаны в csv!
После перезаписи tv5 затирается.
По логике, импорт не должен перезаписывать tv, которые не указаны в csv!
Судя по жалобам на подобное поведение в Tickets — это такой фокус стандартных процессоров обновления ресурсов.
Надо разбираться с ними, но пока некогда.
Надо разбираться с ними, но пока некогда.
Спасибо за ответ! Буду в курсе.
Ха, 30 tv, фигня. Вот мне достался сайт с 350 tv, и вчера наступил на те же грабли. При обновлении с помощью msImportExport значения одной tv, остальные затерлись до дыр, стали пустыми. Судя по ответу автора msImportExport на обращение через личный кабинет Modstore.pro, решения до сих пор не найдено. Очень жаль, это серьезный недостаток в функционале любимой MODX.
Почему используете TV вместо опций в miniShop2?
Ключевое слово здесь «достался». Так исторически сложилось, делали другие разработчики, почему они выбрали такой путь, мне неведомо.
как вариант (ибо другого пути у вас нет) необходимо все же перейти на опции, так как они не затираются. А чтобы перенести данные из TV в опции — можно использовать плагин. Если мне не изменяет память, если его повесить на событие OnDocFormSave, то при прогоне импорта он сработает до того, как очистятся TV, и данные перенесутся — но я не уверен. Вот сам плагин:
Как-то было дело я с этим тоже сталкивался, правда там было 2 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)
С двумя tv это выход, с 350-ю надо очень хорошо подумать, что бы решится на такое. К тому же опции нельзя назначать на категории верхнего уровня, что бы они стали доступны у товаров в подкатегориях. Если сейчас tv назначаются 3-м шаблонам, то опции придется раскидывать между 443-мя категориями. И переобучать контент-менеджеров администрированию всего этого.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.