mSync удаление старых картинок товаров
Доброго времени суток!
При выгрузке товаров на сайт из 1С через mSync новые картинки товаров загружаются в галерею, создаются превьюшки, но старые не удаляются. Видимо, так сделано на тот случай, если старые картинки нужны. Клиент же хочет, чтобы при наличии новых картинок для товара в выгрузке старые удалялись.
Написала плагин на событие mSyncOnPrepareProduct:
Решал ли кто-нибудь подобную задачу? Может ли кто-нибудь подсказать, где я ошиблась, и правильно ли вообще решать эту проблему таким путем?
Автор дополнения в отпуске, спросить у него не могу.
При выгрузке товаров на сайт из 1С через mSync новые картинки товаров загружаются в галерею, создаются превьюшки, но старые не удаляются. Видимо, так сделано на тот случай, если старые картинки нужны. Клиент же хочет, чтобы при наличии новых картинок для товара в выгрузке старые удалялись.
Написала плагин на событие mSyncOnPrepareProduct:
$eventName = $modx->event->name;
if ($eventName == 'mSyncOnPrepareProduct') {
if (!empty($data['images'])) {
$id = $properties['id'];
$images = $modx->getCollection('msProductFile', ['product_id' => $id]);
if (!empty($images)) {
foreach($images as $image) {
$image->remove();
}
}
}
}В таблице событий mSync у этого события есть $data — новые полученные данные, и $properties — как я поняла, свойства товара, имеющиеся в данный момент. Но плагин не работает(. Похоже, что-то все-таки я делаю не так. Решал ли кто-нибудь подобную задачу? Может ли кто-нибудь подсказать, где я ошиблась, и правильно ли вообще решать эту проблему таким путем?
Автор дополнения в отпуске, спросить у него не могу.
Комментарии: 5
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
В файле core/components/msync/model/msync/msynccataloghandler.class.php на 1383 строчке добавила в событие mSyncOnPrepareProduct параметр — id товара, его там, вроде, не было:
Затем плагин переписала так:
Проверяем, есть ли в полученных данных новые картинки у товара, и, если есть хотя бы одна, удаляем старые. Править исходники плохо, но пока получилось только так) Так что при обновлении компонента придется вставлять строчку заново.
На сайте с 10 000 товаров все работает. Только, если много товаров, сайт лучше разворачивать на модхосте, с хорошим запасом свободного места)