События JS при действиях с товаром
Как подцепить события на стороне JS при определенных действиях с товаром?
Например, добавление товара в корзину, оформление заказа, и тд. Я так понимаю, должен быть стандартный набор фреймворка, но не могу найти где.
Попробую четче сформулировать: На стороне клиента в рамках сессии нужно иметь доступ к объектам корзины и заказа. Эти объекты будут прочитываться при вызове соответствующих коллбекок. Нужно что бы не парсить код, для выяснения таких вещей как сумма, позиция и тд.
В документации к сожалению найти нормально не смог, если есть пример рабочей конструкции на JS буду благодарен.
Спасибо за помощь!
Например, добавление товара в корзину, оформление заказа, и тд. Я так понимаю, должен быть стандартный набор фреймворка, но не могу найти где.
Попробую четче сформулировать: На стороне клиента в рамках сессии нужно иметь доступ к объектам корзины и заказа. Эти объекты будут прочитываться при вызове соответствующих коллбекок. Нужно что бы не парсить код, для выяснения таких вещей как сумма, позиция и тд.
В документации к сожалению найти нормально не смог, если есть пример рабочей конструкции на JS буду благодарен.
Спасибо за помощь!
Комментарии: 14
Вы имеете ввиду callback?
Не совсем понятно, вот пример:
miniShop2.Callbacks.add('Cart.add.before', 'restrict_cart', function() {
miniShop2.Message.error('Добавление товаров в корзину запрещено!');
return false;
});
Первый параметр событие, третий обработка. А что такое второй параметр и где посмотреть их список?
Добавил в качестве теста в чанк, в консоле:
miniShop2.Callbacks.add('Cart.add.before', 'restrict_cart', function() {
miniShop2.Message.error('Добавление товаров в корзину запрещено!');
return false;
});
Первый параметр событие, третий обработка. А что такое второй параметр и где посмотреть их список?
Добавил в качестве теста в чанк, в консоле:
Uncaught ReferenceError: miniShop2 is not defined at ...
А что такое второй параметрЭто тупо название коллбека. Чтоб, если он не нужен, его можно было удалить.
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;
});
});
С этим в итоге разобрался. Остался вопрос доступа к объектам магазина через данный фреймворк.
Доступа к объектам вроде нет. Это не фреймворк же на все случаи жизни, а компонент который решает только свои определенные задачи. Я вот не могу представить зачем нужен доступ к объектам корзины на фронте. Опишите что-за задача у вас. Может ее по другому решать надо.
Задача вполне простая. Проходят события добавления товара в корзину и оформления заказа. В этот момент нужно собрать данные по товарным позициям, и отправить инфу. На стороне сервера это сделать увы не получится, нужно именно на стороне клиента. Я это видел так, что можно получить доступ к неким объектом текущего окружения и выгрузить инфу. Ну возможно надо сделать аякс запросы на серв, но пока не понимаю как лучше.
После добавления товара сервер возвращает yadi.sk/i/NW-_BneWewTiXw
То есть, никаких данных о товаре. Вам либо ajax в вытаскиванием данных из корзины и базы либо собирать данные со страницы.
То есть, никаких данных о товаре. Вам либо ajax в вытаскиванием данных из корзины и базы либо собирать данные со страницы.
Хорошо, а как это аяксом вытащить? как подобное делать на стороне сервера, по корзине я представляю, но со стороны JS пока толком не разобрался.
jquery $.post знаете? :-) на стороне сервера делаете скрипт, что вытаскивает данные и по ajax с него выдергиваете данные. А точных инструкций не дам. Вариантов реализации куча. Например можно посмотреть реализацию ajaxForm и от нее отталкиваться.
Можно там так сделать, согласен. Тогда вопрос, как на стороне сервера понять кто делает запрос? Что именно этот пользователь?
ЭЭ… вообще-то тривиально.
$modx->user->get("id");
MODX при инициализации опознает юзера.
Надо протестировать. Отпишусь по результатам ниже.
Ага, их. И желательно получать доступ к объектам.
Действительно, движок определяет и пользователя и сессию. По этому получилось сделать мини АПИ для загрузки нужных данных. Вопрос в следующем, есть ли местные средства аякс запросов или проще использовать штаный js?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.