Всего 123 809 комментариев

Konstantin
20 февраля 2023, 23:07
0
Не обижайте Андрюху, товарищи.
Konstantin
20 февраля 2023, 23:05
0
помогло, спасибо
Тодор
20 февраля 2023, 22:25
0
Если не поможет, то подключи свой сервис cart по етой инструкции, и измени там add() или если тебе надо именно при изменни количества, то меняй change()
Тодор
20 февраля 2023, 22:16
0
Пробуй так:
<?php
$minimal = 5;
switch ($modx->event->name) {
    case 'msOnBeforeChangeInCart':
        $count = &$modx->event->params['count'];
        if ($minimal > 1 && $count < $minimal) {
            $count = $minimal;
        }
        $modx->event->returnedValues['count'] = $count;
        break;
}
Артур Шевченко
20 февраля 2023, 18:04
0
Ну вот у меня всё что возвращает submit() сразу на фронт улетает, а весь код в хуке после submit() почему-то не работает. При этом если поменять echo на return, то всё норм. Может я что-то не так делал, может что-то не так в AjaxFormitLogin, я не знаю. Надо ещё раз проверить.
Николай Савин
20 февраля 2023, 17:39
0
Ну перед die же echo json_encode
Ответ гарантированно должен быть и проверенно работает
Артур Шевченко
20 февраля 2023, 17:32
0
ХЗ, я думал из-за die(). Проверь на досуге где косяк.
Николай Савин
20 февраля 2023, 17:25
0
Почему не выполняется? Должен возвращаться $response, в случае если включен json_response и существует метод оплаты. Я прекрасно реализую ecoomerce методы ПОСЛЕ submit
Артур Шевченко
20 февраля 2023, 17:16
0
Ну не знаю. Факт в том, что в моём варианте с minishop2 >4.0.0 код после $miniShop2->order->submit() не выполняется.
Денис Усачев
20 февраля 2023, 17:02
0
может кому будет полезно: конструкция посредством Fenom

{set $baza_filter = $_modx->resource.baza_filter[0]}
{set $baza_color = $_modx->resource.color_filter[0]}
'optionFilters' => ' { "baza_filter":"'~ $baza_filter ~'" , "color_filter":"'~ $baza_color ~'"  } ' ,
Тодор
20 февраля 2023, 16:38
0
Я использу вот такой снипет для отладки ответов после submit():
<?php
$formFields = $hook->getValues();
$count = (float) $formFields['count'];
$id = (int) $formFields['id'];
if($id <= 0){
    $hook->addError( 'id', "Неправильное ID товара" );
    return false;
}
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->initialize($modx->context->key, array(
        'json_response' => true,
        'max_count' => 1000,
        'allow_deleted' => false,
        'allow_unpublished' => false
    ));
    $tmp = $miniShop2->cart->get();
    $miniShop2->cart->clean();
    $miniShop2->cart->add( $id, $count, $formFields['options']);
    $miniShop2->order->add( 'receiver', $formFields['receiver'] );
    $miniShop2->order->add( 'email', $formFields['email'] );
    $miniShop2->order->add( 'delivery', $formFields['delivery']); // id метода доставки
    $miniShop2->order->add( 'payment', $formFields['payment']); // id метода оплаты
    if($response = $miniShop2->order->submit()){
        if($response['success'] != 1){
            $response = json_decode($response, 1);
            $hook->addError('receiver', $response['message']);
            if(!empty($response['data'])){
                foreach($response['data'] as $field){
                    $hook->addError($field, $response['message']);
                }
            }
            return false;
        }
        $miniShop2->cart->set($tmp);
        return true; // Успешное оформление заказа
    }else{
        $hook->addError('receiver', 'Ошибка при оформлении заказа');
        return false;
    }
}else{
    $hook->addError("receiver", "Проблема инициализации магазина");
    return false;
}
Артур Шевченко
20 февраля 2023, 15:40
0
Всё верно, корзину надо очищать перед оформлением, а вот вернуть то состояние которое было не выйдет, так как после выполнения метода submit() никакой код не выполнится.
Тодор
20 февраля 2023, 15:20
+1
Если не ошибаюсь, то етот код добавит в уже существующе корзину товар, после чего оформляет заказ. Но заказ в 1 клик ето покупка только поточного товара. По етомо после инициализации минишопа я бы еще добавил:
$tmp = $ms2->cart->get();
$ms2->cart->clean();
а после оформления заказа, вернуть назад прежнее содержимое корзини
$ms2->cart->set($tmp);
Prihod
20 февраля 2023, 14:53
0
Скинь в личном сообщении доступ в админку, так же скрин что ты вводишь
Тодор
20 февраля 2023, 12:14
0
Добрий день! После выбора области и населеного пунтка, если оставлять поле «Отделение» пустым, и нажать на карту, то открывается ПУСТАЯ карта, без отделении. На демо видео показано что там уже дожны подтягиватся отделения. Если уже выбрать отделение и потом открыть карту — то там уже есть отделения.
И вторая проблема ето то что в селах не подтягиваються названия улиц для — Доставки курером.
Stepan
19 февраля 2023, 17:57
0
Алексей, в карточке товара я бы сбрасывал количество после добавления
Андрей Степаненко
19 февраля 2023, 16:13
+2
Надо не забывать что есть много платежных сервисов которые сделали свои пакеты, их да же нету в modstore
99% что они по тому же пути обращаются

Андрей Степаненко
19 февраля 2023, 16:04
+3
линки на контроллеры:
components/minishop2/handlers/mspaymenthandler.class.php
components/minishop2/handlers/msdeliveryhandler.class.php
Возможно оставить в папках:
components/minishop2/model/minishop2/msdeliveryhandler.class.php
components/minishop2/model/minishop2/mspaymenthandler.class.php
??

Сейчас компоненты которые раньше обращались к эти классам, нужно перерабатывать.

Скорей всего таких компонентов много, то есть все те что связаны с доставкой и оплатой