Svetlana S

Svetlana S

Был в сети 14 декабря 2020, 17:14
Заказы принимаю
Хм, сейчас вспомню)

В файле core/components/msync/model/msync/msynccataloghandler.class.php на 1383 строчке добавила в событие mSyncOnPrepareProduct параметр — id товара, его там, вроде, не было:

$this->log("Вызвано событие mSyncOnPrepareProduct для товара с uuid={$productData['uuid']}", 1);
        $response = $this->msync->invokeEvent('mSyncOnPrepareProduct', array(
            'data' => $productData,
            'parent' => $categoryId,
            'properties' => $properties,
            'custom_id' => $productId,
        ));
Затем плагин переписала так:

$eventName = $modx->event->name;

if ($eventName == 'mSyncOnPrepareProduct') {
    
    if (!empty($data['images']) && !empty($custom_id)) {
        $id = (int) $custom_id;
        
        $images = $modx->getCollection('msProductFile', ['product_id' => $id]);
        
        if (!empty($images)) {
            foreach($images as $image) {
                $image->remove();
            }
        }
    }
}
Проверяем, есть ли в полученных данных новые картинки у товара, и, если есть хотя бы одна, удаляем старые. Править исходники плохо, но пока получилось только так) Так что при обновлении компонента придется вставлять строчку заново.

На сайте с 10 000 товаров все работает. Только, если много товаров, сайт лучше разворачивать на модхосте, с хорошим запасом свободного места)
Событие, конечно же, включено. Плагин срабатывает — из-за этого выгрузка обрывается, и все. Картинки не обновляются, в логах никаких ошибок нет. Видимо, просто что-то не правильно в плагине. В документации к mSync написано, что $properties — это свойства товара. Как поточнее посмотреть — понятия не имею( Код mSync довольно сложный, разбитый на множество файлов, так и не нашла в них, где это событие вызывается
Спасибо.

Было бы здорово создать системные настройки с указанием списков доступных полей ресурса и чанков для вывода фильтров, чтобы не выводилось лишнее. Вряд ли кому-то захочется фильтровать ресурсы по alias_visible или link_attributes)
Здравствуйте. При вводе купона в корзине не меняется цена, хотя скрипт добавила. Версия минишопа 2.4.18, msDiscount 1.3.10. Судя по файлам, нужные изменения в этой версии минишопа есть, правда, файлы выглядят уже немного иначе) Не нужно ли еще в них что-то добавить?
По-видимому, копать нужно отсюда bezumkin.ru/training/course2/3006/ Раньше у описания msGallery на modstore, кажется, был нужный пример вывода через pdoResources. Но его я не помню) Пока отложила для себя эту проблему до тех времен, когда получше разберусь с API