События JS при действиях с товаром

Как подцепить события на стороне JS при определенных действиях с товаром?

Например, добавление товара в корзину, оформление заказа, и тд. Я так понимаю, должен быть стандартный набор фреймворка, но не могу найти где.

Попробую четче сформулировать: На стороне клиента в рамках сессии нужно иметь доступ к объектам корзины и заказа. Эти объекты будут прочитываться при вызове соответствующих коллбекок. Нужно что бы не парсить код, для выяснения таких вещей как сумма, позиция и тд.
В документации к сожалению найти нормально не смог, если есть пример рабочей конструкции на JS буду благодарен.

Спасибо за помощь!
Sergey
14 ноября 2019, 10:48
modx.pro
2 024
0

Комментарии: 14

ElenaLelo
14 ноября 2019, 11:08
+1
Вы имеете ввиду callback?
    Sergey
    14 ноября 2019, 11:41
    0
    Не совсем понятно, вот пример:
    miniShop2.Callbacks.add('Cart.add.before', 'restrict_cart', function() {
    miniShop2.Message.error('Добавление товаров в корзину запрещено!');

    return false;
    });

    Первый параметр событие, третий обработка. А что такое второй параметр и где посмотреть их список?

    Добавил в качестве теста в чанк, в консоле:
    Uncaught ReferenceError: miniShop2 is not defined    at ...
      Александр Туниеков
      15 ноября 2019, 00:12
      +1
      А что такое второй параметр
      Это тупо название коллбека. Чтоб, если он не нужен, его можно было удалить.
      Uncaught ReferenceError: miniShop2 is not defined at
      Это ваш скрипт выполняется раньше, чем загрузился скрипт минишопа.
      <script type="text/javascript" src="/assets/components/minishop2/js/web/default.js?v=d62e73368c"></script>
      </body>
      Он в конце страницы перед обычно встает.
      Можно сделать так
      $(function() { 
         miniShop2.Callbacks.add('Cart.add.before', 'restrict_cart', function() {
            miniShop2.Message.error('Добавление товаров в корзину запрещено!');
            return false;
         });
      });
        Sergey
        15 ноября 2019, 09:13
        0
        С этим в итоге разобрался. Остался вопрос доступа к объектам магазина через данный фреймворк.
          Александр Туниеков
          15 ноября 2019, 15:15
          0
          Доступа к объектам вроде нет. Это не фреймворк же на все случаи жизни, а компонент который решает только свои определенные задачи. Я вот не могу представить зачем нужен доступ к объектам корзины на фронте. Опишите что-за задача у вас. Может ее по другому решать надо.
            Sergey
            15 ноября 2019, 16:46
            0
            Задача вполне простая. Проходят события добавления товара в корзину и оформления заказа. В этот момент нужно собрать данные по товарным позициям, и отправить инфу. На стороне сервера это сделать увы не получится, нужно именно на стороне клиента. Я это видел так, что можно получить доступ к неким объектом текущего окружения и выгрузить инфу. Ну возможно надо сделать аякс запросы на серв, но пока не понимаю как лучше.
              Александр Туниеков
              15 ноября 2019, 17:31
              +1
              После добавления товара сервер возвращает yadi.sk/i/NW-_BneWewTiXw
              То есть, никаких данных о товаре. Вам либо ajax в вытаскиванием данных из корзины и базы либо собирать данные со страницы.
                Sergey
                15 ноября 2019, 18:24
                0
                Хорошо, а как это аяксом вытащить? как подобное делать на стороне сервера, по корзине я представляю, но со стороны JS пока толком не разобрался.
                  Александр Туниеков
                  15 ноября 2019, 19:34
                  +1
                  jquery $.post знаете? :-) на стороне сервера делаете скрипт, что вытаскивает данные и по ajax с него выдергиваете данные. А точных инструкций не дам. Вариантов реализации куча. Например можно посмотреть реализацию ajaxForm и от нее отталкиваться.
                    Sergey
                    16 ноября 2019, 13:23
                    0
                    Можно там так сделать, согласен. Тогда вопрос, как на стороне сервера понять кто делает запрос? Что именно этот пользователь?
                      Александр Туниеков
                      16 ноября 2019, 21:57
                      +1
                      ЭЭ… вообще-то тривиально.
                      $modx->user->get("id");
                      MODX при инициализации опознает юзера.
                      Sergey
                      18 ноября 2019, 10:06
                      0
                      Надо протестировать. Отпишусь по результатам ниже.
Sergey
14 ноября 2019, 11:37
0
Ага, их. И желательно получать доступ к объектам.
    Sergey
    21 ноября 2019, 09:56
    0
    Действительно, движок определяет и пользователя и сессию. По этому получилось сделать мини АПИ для загрузки нужных данных. Вопрос в следующем, есть ли местные средства аякс запросов или проще использовать штаный js?
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      14