Семён Кудрявцев

Семён Кудрявцев

С нами с 21 августа 2015; Место в рейтинге пользователей: #40
Семён Кудрявцев
19 октября 2016, 12:46
0
В общем так и не получилось у меня реализовать всё только через плагин, пришлось использовать коллбеки miniShop2.
Получилось у меня вот такое решение: (может кому пригодится)
miniShop2.Callbacks.add('Cart.change.response.success', 'verify_min_cost', function (response) {
        var min_cost = $('#min_cost'), //элемент с сообщением
            order_submit = $('#order_submit'); //Кнопка отправки заказа

        if(response.data.total_cost < 1500){
            min_cost.text("Минимальная сумма заказа - 1500 руб.");//сообщение прям на странице
            miniShop2.Message.error('Сумма заказа должна быть от 1500 руб.!');//сообщение во всплывашке
            order_submit.prop('disabled', true);//просто деактивируем кнопку отправки заказа
            
            return false; // выходим из коллбека
        }
        min_cost.text("");//очищаем сообщение на странице
        order_submit.prop('disabled', false);//активируем кнопку отправки заказа
    });
Ну а для шаловливых рук, которые могут подправить js на лету и попытаться отправить заказ я повесил свой плагин на событие msOnSubmitOrder
Ещё раз код плагина
if ($modx->event->name == 'msOnSubmitOrder'){
    if($cart = $order->ms2->cart->status()) {
        if($cart['total_cost'] < 1500) {
            $modx->event->output('Сумма вашего заказа должна превышать 1500 руб!');
        } 
    }
}
Сообщение от него конечно не появляется, но заказ не будет отправлен, а так как страница перезагрузится, то и скрипты и статические проверки прямо в шаблоне страницы снова сработают и будут выведены сообщения о минимальной цене заказа.
Маленькое уточнение — задача была на минимальную стоимость заказа без учёта доставки или ещё чего-то, только сумма товаров в корзине.
Семён Кудрявцев
12 октября 2016, 09:14
1
0
Классное решение, не знал, что так можно, в своё время решил этот момент с помощью компонента Quickstart Buttons от ребят из modmore.com — получалось вот такое — yadi.sk/i/v8u1NZoVwgRkz
Семён Кудрявцев
07 октября 2016, 15:33
0
Итоговое решение — просто у себя в js пишем
miniShop2.Callbacks.Cart.add.response.success = function() {
    if(miniShop2.sendData.$form.hasClass('fast_order')){
        document.location = '/korzina';
    }
};
Семён Кудрявцев
07 октября 2016, 15:22
+1
Я всё таки откопал решение, в недрах постов сообщества)
Решение на удивление простое:
В свою функцию в коллбеке miniShop2 на самом деле передаёт элемент формы, с которой пришло событие, просто я не думал что искать его надо вот так)
var form = miniShop2.sendData.$form
Так что мой вопрос решился просто — второй форме, в которой лежит кнопка быстрой покупки, я дописал ещё один класс по мимо ms2_form — например fast_order и в своей функции проверил
if(form.hasClass('fast_order')){
        document.location = '/korzina';
    }
Семён Кудрявцев
07 октября 2016, 08:56
+2
Сталкивался пару раз с такой же ситуацией, помогла простая переустановка соответствующей версии MODX Revo прям по верх сайта:
1)Идёшь в core/docs/changelog.txt — смотришь какая версия MODX стоит.
2)На оф.сайте качаешь соответствующий дистрибутив — из него забираешь только папку setup и кидаешь её в корень своего сайта.
3)Запускаешь установку в режиме обновления конфигурации (не новая установка!)
4)Проверяешь работу сайта и админки.
Мне данный способ пару раз помогал решить похожую проблему, стоит попробовать.
Семён Кудрявцев
19 августа 2016, 13:41
0
Павел, спасибо, правда искал в доках, но видимо день сегодня не мой))
Семён Кудрявцев
05 августа 2016, 17:40
+1
Максим, спасибо, помогло.
Семён Кудрявцев
13 июля 2016, 12:20
0
Василий, благодарю за внесение ясности в вопрос, из-за подсказку по реализации моей задачи отдельное спасибо!
Семён Кудрявцев
22 июня 2016, 11:18
0
Ответ получил в чате сообщества — кому нужно будет — просто обращаемся к переменной $msOrder и методом get() достаем любые данные заказа.
Семён Кудрявцев
12 июня 2016, 12:53
1
0
Было бы куда понятнее если бы скрин был об этом) Но раз умеет круто — автору уважуха за труд.
Семён Кудрявцев
12 июня 2016, 08:24
0
Вопрос — а генерировать эти самые коды компонент умеет?
Семён Кудрявцев
02 июня 2016, 07:34
0
Да, Василий, беру слова обратно — всё работает как часы. Спасибо за столь ранний ответ.
Семён Кудрявцев
01 июня 2016, 22:43
0
Не могу нарадоваться тому что теперь все проекты можно разрабатывать в любимой IDE да ещё и с Fenom-ом, и тут меня посетила давняя мысль — в компоненте modxSmarty с которого я сейчас по-тихоньку слезаю, автором была заявлена очень интересная фича — когда ты залогинен в контексте mgr системная настройка с путём ко всем шаблонам могла быть изменена только для тебя — это бы дало возможность дорабатывать страницы, редизайнить их и экспериментировать на живом проекте и с живыми данными, но как бы со своим оформлением, в моей работе это очень актуальный вопрос — клиенты просят побыстрее запустить сайт и потом походу его дорабатывать, но на живом сайте вести доработки, особенно визуальные, которые надо тестить постоянно не очень то удобно, да и пользователям видеть эти полу-доработки ни к чему. В MODX есть классная штука, что, будучи авторизованным в mgr можно смотреть ещё не опубликованные ресурсы, но если шаблоны для этих ресурсов содержат хоть сколько нибудь сложную структуру с вызовами кучи сниппетов — это надо постоянно везде указывать параметры типа showUnpublished, а они есть не у всех сниппетов. Так вот к чему я это всё — было бы круто выставить допустим админу настройку pdotools_elements_path с другим путем отличным от общих шаблонов и если он авторизован в mgr то ему показывать шаблоны из этого пути, давая возможность параллельно вести доработку проекта. Что скажете? Вообще кому нибудь ещё интересна и полезна такая штука?
Семён Кудрявцев
01 июня 2016, 20:21
0
Василий, я ни сколько не хотел заваливать проблемами, у меня опыта в программировании мало, вряд ли я сам смогу что-то найти, поэтому пока тема свежа и ты как раз занят полной модернизацией miniShop2 вот и решил в доступной мне форме рассказать о замеченных моментах.
Семён Кудрявцев
01 июня 2016, 20:15
0
да это пожалуй пока будет хорошее решение для меня. Спасибо за ответ.
Семён Кудрявцев
01 июня 2016, 20:14
0
Пока набрасывал пример проблемы решил ещё одни момент протестить, тоже ещё с прошлой версии был замечен, о нём я как то писал в багрепорт на гитхабе, когда в заказ в админке добовляешь ещё позицию товара, то получаем следующее — если товар тотже, который уже есть в списке, то он не к количеству добавляется, а встаёт как отдельная позиция и второй момент после сохранения изменений в таблице не просиходит пересчёт цены с первого раза, вот если какую нибудь позицию в заказе потом открыть на редактирование и просто закрыть и снова сохранить заказ — вот тогда пересчёт работает. Это тоже можно посмотреть на той быстрой сборке.
Семён Кудрявцев
01 июня 2016, 19:57
0
Да нет, особой нужды и не было какие-то костыли изобретать, всё твоё родное прописано — чанки, сниппеты, шаблоны — сейчас на чистой сборке по-быстрому воспроизвёл ситуацию — таже беда, если будет время и возможность посмотри, пожалуйста. На modhost.pro доступы s5554.h6.modhost.pro/manager/
логин — s5554
пароль — MN4CZ34HW3tl
Семён Кудрявцев
01 июня 2016, 17:30
0
Обновился до беты-полёт нормальный, один момент интересует заметил его ещё в прошлой версии, есть такая настройка, которая может ограничить количество товара(одной позиции) — ms2_cart_max_count, я её в 1 поставил и дальше вот что происходит, в общем каталоге реально не даёт положить больше одного товара, вежливо пишет что нельзя лимит такой-то, но стоит пройти на страницу этого товара и нажать на кнопку купить там — он без проблем добавляется в карзину — в итоге не получается ограничить данной настройкой реально количество одной позиции. Кто-то с таким сталкивался?