Добавление в избранное или отложенные, на AJAX из карточки товара

RSS
Добавление в избранное или отложенные, на AJAX из карточки товара
 
Добавление в избранное или отложенные, на AJAX из карточки товара

В этой заметке рассакажу как добавлять товары в "Отложенные", для иммитации функционала "Избранное". Для этого будем использовать API 1С-Битрикс. Добавление будет происходить на AJAX- без перезагрузки страницы.
 
Здравствуйте!
Как при добавление в избранное передать значения выбранных торговых предложений?
Пыталась добавить через параметр "PROPS"  CSaleBasket::Add($arFields);  
вышло таким образом https://c2n.me/3Rn0pZ1
 
Присоединяюсь.
Подскажите как добавить в избранное Торговые предложения.
 
Странно, но у меня через раз работает. Например три-четыре товара добавит, потом перестает реагировать. Потом опять пару товаров добавит и т.д. В чем может быть дело как считаете?
И подскажите как реализовать не в детальной карточке товара, а в списке товаров?
 
Цитата
Александр Силуянов пишет:
Странно, но у меня через раз работает. Например три-четыре товара добавит, потом перестает реагировать. Потом опять пару товаров добавит и т.д. В чем может быть дело как считаете?
И подскажите как реализовать не в детальной карточке товара, а в списке товаров?
В дополнении к сообщению:
Хром вот такую ошибку выдает при клике Uncaught SyntaxError: missing ) after argument list
 
Цитата
Александр Силуянов пишет:
Цитата
Александр Силуянов пишет:
Странно, но у меня через раз работает. Например три-четыре товара добавит, потом перестает реагировать. Потом опять пару товаров добавит и т.д. В чем может быть дело как считаете?
И подскажите как реализовать не в детальной карточке товара, а в списке товаров?
В дополнении к сообщению:
Хром вот такую ошибку выдает при клике Uncaught SyntaxError: missing ) after argument list
Проблема решена, потому что я олень))
В названии продукции есть слово L'Oreal и верхний апостроф мешал корректному вызову...
Убрал из кода '<?=$arResult["NAME"]?>', и еще ко что..
 
Здравствуйте!
Замечательные уроки, всё получается, но есть вопрос, у Вас на сайте есть список отложенных товаров - как его вывести(отдельно от корзины)?  
 
ошибка здесь, лишняя скобка...
"NAME" => $_POST['name']),
 
Цитата
Сергей Сыроежкин пишет:
ошибка здесь, лишняя скобка...
"NAME" => $_POST['name']),
Да, спасибо, поправил.
 
День добрый!

Спрашивал, на недавней трансляции, про фичу "Купить в один клик", был послан примерно сюда, а тут не такого  :)
 
Интересный момент, битрикс последний, шаблон дефолтный магазина,  при добавлении в избранное товар появляется в корзине, но у него цена пустая, и есть кнопка добавить в заказ http://joxi.ru/brRpkKqCJkEWE2 , но даже при добавлении цена не появляется, я так полагаю потому что не передаётся параметр PRICE?
 
Цитата
Antik написал:
Интересный момент, битрикс последний, шаблон дефолтный магазина,  при добавлении в избранное товар появляется в корзине, но у него цена пустая, и есть кнопка добавить в заказ  http://joxi.ru/brRpkKqCJkEWE2  , но даже при добавлении цена не появляется, я так полагаю потому что не передаётся параметр PRICE?
Наверное, потому что у Вас каталог с торговыми предложениями. Описанное в заметке, добавляет цену товара, только если он самодостаточный
Просто, передавайте в "избранное" первое попавшееся торговое предложение, а не сам товар.
 
Здравствуйте,
подскажите как передать еще торговое предложение в избранное?!
 
Добрый день.
Все работает, но только для авторизованных пользователей.
Также обратил внимание, что другие java скрипты глючат на неавторизованных пользователях, как будто не всё ядро подключено. Пример здесь. В чем может быть дело?
Корзина глючит тоже, форма регистрации не показывает капчу. В общем, какая-то масса проблем с общим корнем, а в документации не нашел ничего.
 
Цитата
Andrey Sukhanov написал:
Добрый день.
Все работает, но только для авторизованных пользователей.
Также обратил внимание, что другие java скрипты глючат на неавторизованных пользователях, как будто не всё ядро подключено. Пример  здесь . В чем может быть дело?
Корзина глючит тоже ,  форма регистрации  не показывает капчу. В общем, какая-то масса проблем с общим корнем, а в документации не нашел ничего.
Посмотрите, может быть регистрация обязательна в главном модуле
Если нет-то подсказать тяжело, нужно разбираться изнутри
Чуть позже, будет заметка о реализации отложенного- не на базе избранного.  
 
Михаил, спасибо за ваши видео и уроки, помогают разобраться с битриксом.

Хотел бы сказать по поводу данного скрипта, что он плох в безопасности.
Использую ваши заготовки.

Цена передается через аякс, что не есть хорошо!
Вот пример
Через консоль браузера меняю цену:
http://joxi.ru/82QvQ0liwVOe6A

Жму в отложенные, теперь у меня в отложенных лежит товар с ценой 70.00
http://joxi.ru/brRv5Joi7Leger

Перекидываю его в корзину и что я вижу, теперь вместо товара с ценой  20070.00 руб. получаю товар за 70р.
Могу оформить заказ за 70р вместо 20070.00

На вашем сайте так же!
Взял для примера товар
http://bxstore.ru/catalog/item/audio-technica-vm520eb-h-golovka-zvukosnimatelya.php

http://joxi.ru/gmvKvnNcqdX5W2
http://joxi.ru/nAyRxkgTga1Oqr

Я бы сказал это критическая уязвимость...  :!:  

Так же при перекидывание из отложенных в корзину, количество товаров становиться 2, а не 1. Должен же просто меняться флаг на "DELAY" => "N"

Логика наверно должна быть такая, что через аякс передается ID товара, а уже внутри скрипта получаем все данные , в том числе и цену. Мне кажется этот код надо убирать с вашего сайта и написать без уязвимостей.
 
Цитата
Константин Ильин написал:
Михаил, спасибо за ваши видео и уроки, помогают разобраться с битриксом.

Логика наверно должна быть такая, что через аякс передается ID товара, а уже внутри скрипта получаем все данные , в том числе и цену. Мне кажется этот код надо убирать с вашего сайта и написать без уязвимостей.

Не получилось именно купить такой, "хакнутый" товар. При оформлении заказа, все равно установилась правильная цена.
Но да, минусом это можно назвать.
Да и достаточно, в самом деле, передавать только ID товара в ссылке и скрипте.

Вообще, эта модель, избранное-через отложенные корзины, мне не очень нравится и уже готов компонент нормальных избранных.
Скоро опубликую, в блоге.  Допричесать нужно.
 
Цитата
Михаил Базаров пишет:
Цитата
Не получилось именно купить такой, "хакнутый" товар. При оформлении заказа, все равно установилась правильная цена.
Но да, минусом это можно назвать.
Да и достаточно, в самом деле, передавать только ID товара в ссылке и скрипте.
Понял, далее я не пробовал конечно.

Цитата
Вообще, эта модель, избранное-через отложенные корзины, мне не очень нравится и уже готов компонент нормальных избранных.
Эта модель вообще какой-то бред... я с битриксом не так давно работаю, много что излишне усложнено, но это "плата" за то что многое предусмотрено для всяких контент менеджеров. Ведь за частую много того что не нужно или вообще даже ни разу не будет использоваться.
В этом плане модх конечно выигрывает, так сказать для разработчиков проще.

Цитата
Скоро опубликую, в блоге.  Допричесать нужно.
Здорово! Очень жду! Как завершу проект , надо бы вам на пиво пару рублей закинуть, много уроков ваших помогли. Спасибо еще раз, и жду новых видосов и компонентов :)
 
а как сделать чтобы при повторном нажатии данный товар убирался из "избранного" ??? :(
 
Цитата
dev bosgroup пишет:
а как сделать чтобы при повторном нажатии данный товар убирался из "избранного" ???
к слову пробовал - CSaleBasket:: Delete(ID) но это не работает
 
А как сделать чтобы товары из избранного не удалялись при оформлении заказа в корзине? Пользователь оформляет заказ и все его сохраненные товары исчезают
 
Михаил Базаров,
подскажите пожалуйста, как на аяксе реализовать вывод избранных товаров?
используя функционал из данного урока.

при клике на кнопку добавить в избранное у вас меняется сразу же счетчик.
к примеру к нему добавлю всплывающее окно - и в нем выведу "отложенные" - тогда они там появляются только после перезагрузки страницы, а хотелось бы чтоб сразу всплывали.
 
Михаил Базаров,  Подскажите пожалуйста  как сделать чтобы не сбрасывался стиль кнопки, в списке товаров- если данный товар есть в отложенных?!
 
Реализация вполне не плохая, но на самом деле я бы делал по-другому:
Во первых, скрипт передает цену, указанную в параметре "&p=" напрямую, а это говорит о том, что я могу в любой момент подменить цену в html на любую другую и она попадет в отложенные в корзину, где я смогу "вернуть" товар в корзину и купить по этой цене.
Во вторых, в идеале убрать jQuery и забиндить обработчик на Bitrix JS и реализовать с помощью ajax битрикса в файле script.js шаблона.

Спасибо за статью;)
 
Цитата
Андрей Сенин написал:
Реализация вполне не плохая, но на самом деле я бы делал по-другому:
Во первых, скрипт передает цену, указанную в параметре "&p=" напрямую, а это говорит о том, что я могу в любой момент подменить цену в html на любую другую и она попадет в отложенные в корзину, где я смогу "вернуть" товар в корзину и купить по этой цене.
Во вторых, в идеале убрать jQuery и забиндить обработчик на Bitrix JS и реализовать с помощью ajax битрикса в файле script.js шаблона.

Спасибо за статью;)
В целом да. Только с подменой цены не согласен ) - оформление заказа не даст оформить с поддельной ценой.
Понятное дело, не сам компонент оформления заказа, а "подкапотная" реализация.

У меня уже готов свой компонент избранного, пишет все отдельную табличку БД - на нескольких проектах работает успешно. Скоро (не знаю когда :) ) заверну его в установщик и поделюсь.
Изменено: Михаил Базаров - 10.04.2021 16:34:07
 
Добрый день!
Скажите пожалуйста а как добавить кнопку удалить из избранного для одного товара из списка.
Удалить все -работает
Но хочется по одному удалять
 
Цитата
написал:
Цитата
Андрей Сенин написал:
Реализация вполне не плохая, но на самом деле я бы делал по-другому:
Во первых, скрипт передает цену, указанную в параметре "&p=" напрямую, а это говорит о том, что я могу в любой момент подменить цену в html на любую другую и она попадет в отложенные в корзину, где я смогу "вернуть" товар в корзину и купить по этой цене.
Во вторых, в идеале убрать jQuery и забиндить обработчик на Bitrix JS и реализовать с помощью ajax битрикса в файле script.js шаблона.

Спасибо за статью;)
В целом да. Только с подменой цены не согласен ) - оформление заказа не даст оформить с поддельной ценой.
Понятное дело, не сам компонент оформления заказа, а "подкапотная" реализация.

У меня уже готов свой компонент избранного, пишет все отдельную табличку БД - на нескольких проектах работает успешно. Скоро (не знаю когда  ) заверну его в установщик и поделюсь.
Михаил, еще не выкладывали компонент? Может я пропустил) Как вариант на маркетплейс можно закинуть за пару рубчиков
 
Цитата
Вячеслав написал:
Цитата
 В целом да. Только с подменой цены не согласен ) - оформление заказа не даст оформить с поддельной ценой.
Понятное дело, не сам компонент оформления заказа, а "подкапотная" реализация.

У меня уже готов свой компонент избранного, пишет все отдельную табличку БД - на нескольких проектах работает успешно. Скоро (не знаю когда  ) заверну его в установщик и поделюсь.
Михаил, еще не выкладывали компонент? Может я пропустил) Как вариант на маркетплейс можно закинуть за пару рубчиков

Пока нет, но скоро :)  
 
А как сделать чтобы при наведении на значек корзины выводилось ее содержимое( краткое описание и маленькое фото ) ,BX.addCustomEvent ? не в ту сторону копаю?
 
Цитата
Александр написал:
А как сделать чтобы при наведении на значек корзины выводилось ее содержимое( краткое описание и маленькое фото ) ,BX.addCustomEvent ? не в ту сторону копаю?

В штатном шаблоне корзины sale.basket.basket.line это уже  есть. Верстка в файле ajax_template.php
 
Спасибо)  
 
Добрый вечер, с детальной карточки товара товар добавляется в избранное, а как добавить товар в избранное с catalog.item или catalog.section?
 
Цитата
Алексей написал:
Добрый вечер, с детальной карточки товара товар добавляется в избранное, а как добавить товар в избранное с catalog.item или catalog.section?

Нужно правильно передать ID товара. В catalog.item это $item['ID'] в catalog.section, вроде бы $arElement['ID']
 
Спасибо! это сработало)
 
Доброй ночи, добавление в избранное по вашей методике работает отлично в catalog.item, подскажите пожалуйста, а как удалить из избранного при повторном нажатии на добавление в избранное?  
 
Добрый.
По сути, нужно сделать обратное действие: не добавить товар в отложенные корзины а удалить его оттуда.
Для этого, можно проверить наличие этого товара в отложенных и если он там есть использовать метод
CSaleBasket::Delete
Код
if (CSaleBasket::Delete(ПЕРЕДАЕМ ID ЗАПИСИ ПО ID ТОВАРА)) {
   обработчик который обновит счетчик
}

Если будет время, дополню эту заметку. Но ориентир, в какую сторону копать дал)
Изменено: Михаил Базаров - 06.02.2023 10:21:09
 
Спасибо большое, буду пробовать, но если дополните заметку буду признателен)  
 
Добрый день, а как сделать, чтобы отложенные товары в самой корзине не отображались? Это возможно? Использую современный шаблон basket. Спасибо  
 
Да, просто подправить этот момент в шаблоне /ШАБЛОН_КОРЗИНЫ/js-templates/basket-item.php
Изменено: Михаил Базаров - 17.02.2023 23:00:57
 
Михаил, привет!

Прочитал вашу статью, но с момента ее выхода, как я понимаю, многое поменялось, и теперь советуют делать избранное на пользовательских полях.

Что думаете на эту тему?
 
И еще один вопрос, если позволите.

Как в компоненте sale.basket.basket вывести избранное? Спасибо!
 
Цитата
Viacheslav написал:
Михаил, привет!
Прочитал вашу статью, но с момента ее выхода, как я понимаю, многое поменялось, и теперь советуют делать избранное на пользовательских полях.

Что думаете на эту тему?

Да, лучше делать на пользовательских полях. У меня уже готовы модуль и компонент, который это реализует.
Но выложу я его в процессе выпуска видеоурока по разработке сложного интернет магазина.
На вскидку, доберусь до этого вопроса к июлю 2023
Изменено: Михаил Базаров - 23.04.2023 19:03:21
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Ютубе