Алексей

Алексей

С нами с 30 сентября 2020; Место в рейтинге пользователей: #3705
Алексей
21 марта 2024, 18:50
0
А откуда SendIt получает ответ от минишопа (со ссылкой редиректа или номера заказа)? Я сделал так же только на ajaxform, и вот вопрос, как передать ответ минишопа в событие успешной отправки ajaxform?

$(document).on('af_complete', function (event, response) {
    if (response.success) {
        // Можно ли тут получить номер заказа или ссылку на оплату?
    }
});
Алексей
13 июля 2021, 17:18
0
Спасибо за наводку! Так и есть! Компонент autoRedirector использует эти события и перебирает у себя в цикле дерево ресурсов.

А ещё вопрос можно ли как то отключить лог действий пользователя для импорта, а то недавно чистил таблицу, она уже на 2 гига выросла…
Алексей
13 июля 2021, 14:08
0
Столкнулся с непонятным ооочень долгим обновлением одной категории во время импорта (обновление происходит через процессор «mgr/extend/updatemscategory»), может кто-то может объяснить почему так? Очень долго искал место где всё стопориться на долго.

Потом уже воспроизводил через консоль, вручную подставил теже самые данные:
$processorProps = array(
    'id' => 274,
    'class_key' => 'msCategory',
    'pagetitle' => 'ЖЕНСКОЕ',
    'context_key' => 'web',
    'parent' => 40,
);

$this->modx->runProcessor('mgr/extend/updatemscategory', $processorProps, array('processors_path' => '/var/www/site/data/www/site/core/components/msync/processors/'));
Ответ о времени и запросах из консоли:
SQL time: 5.0144 s
SQL queries: 16430 — 16 тыщь запросов к базе? ради обновления одной категории???
PHP time: 49.7612 s
Total time: 54.7757 s — 54 секунды на одну категорию??
Memory: 116 MB
Сделал временно пока так
Файл /core/components/msync/model/msync/msynccataloghandler.class.php:790:
/**
 * Update miniShop2 category
 *
 * @param $parentId
 * @param $categoryId
 * @param $categoryName
 * @return bool|mixed
 */
protected function updateMsCategory($parentId, $categoryId, $categoryName)
{
    $this->clearModxErrors();

    // $processorProps = array(
    //     'id' => $categoryId
    //     , 'class_key' => 'msCategory'
    //     , 'pagetitle' => $categoryName
    //     , 'context_key' => $this->config['catalog_context']
    // );
    // if ($parentId) $processorProps['parent'] = $parentId;

    $category = $this->modx->getObject('modResource', $categoryId);
    if($category) {
        $category->set('class_key', 'msCategory');
        $category->set('pagetitle', $categoryName);
        $category->set('context_key', $this->config['catalog_context']);
        if ($parentId) $category->set('parent', $parentId);
        $category->save();

        return true;
    } else {
        return false;
    }

    // TODO очень долго выполняется, много запросов
    //$response = $this->modx->runProcessor('mgr/extend/updatemscategory', $processorProps, array('processors_path' => $this->config['processorsPath']));

    // if (!$response->isError()) {
    //     $_SESSION['importResources']['category']['updated'][] = $categoryId;
    //     return $response;
    // } else return false;
}
Алексей
27 апреля 2021, 16:06
0
Тоже интересует данный вопрос…
У меня настроен mSync с 1С, написан плагин который создаёт модификации в msOptionPrice2 (каждые раз при обновлении из 1С идёт проверка есть ли уже такая опция или нет, если нет создаёт, а то раньше просто добавлял бесконечные модификации и хорошо что у всех товаров есть модификации, а то тогда становится всего нет в наличии), а есть просто товары без привязки к 1С и вот нужно что бы они просто покупались… потому что у них нет модификаций… я вышел из положения просто создав пустую модификацию с количеством в 1000000 и теперь можно положить в корзину xD