Меню
Серия 19: Добавление в корзину, избранное и сравнение на AJAX.

Реализуем функционал добавления в корзину, в избранное и в сравнение, для каталога товаров.
Здравствуйте!

После добавления в корзину на месте small.basket появляется сообщение 'basket.small.bazarow' is not a component

Не подскажете в чем может быть дело?)
Цитата
Слава Струк пишет:
Здравствуйте!

После добавления в корзину на месте small.basket появляется сообщение 'basket.small.bazarow' is not a component

Не подскажете в чем может быть дело?)
проблема была в компоненте судя по всему, использовал тот, что был в первом архиве local.
Скачал архив из 20го урока, заменил, все заработало.
Цитата
Слава Струк написал:
Цитата
Слава Струк  пишет:
Здравствуйте!

После добавления в корзину на месте small.basket появляется сообщение 'basket.small.bazarow' is not a component

Не подскажете в чем может быть дело?)
проблема была в компоненте судя по всему, использовал тот, что был в первом архиве local.
Скачал архив из 20го урока, заменил, все заработало.
Да, там в файле ajax не правильный компонент был подключен. В 20-ой все нормально
Здравствуйте, Михаил!

То же скачал архив из 20го урока и заменил...   :)  

Но есть другие проблемы, не могу понять почему у меня происходит не так как у вас:


1. При нажатии на кнопку "В корзину" у вас выглядит так что страница не обновляется, и всплывает окно, что товар добавлен.
У меня же происходит так, нажимаю "В корзину" обновляется страница, в корзине товар появляется, но нет всплывающего окна.

2. В вас при нажатии на чекбокс для сравнения, тоже всплывает окно, а у меня нет.

Что делать?
Цитата
Андрей Колчанов написал:
Здравствуйте, Михаил!

То же скачал архив из 20го урока и заменил...    

Но есть другие проблемы, не могу понять почему у меня происходит не так как у вас:


1. При нажатии на кнопку "В корзину" у вас выглядит так что страница не обновляется, и всплывает окно, что товар добавлен.
У меня же происходит так, нажимаю "В корзину" обновляется страница, в корзине товар появляется, но нет всплывающего окна.

2. В вас при нажатии на чекбокс для сравнения, тоже всплывает окно, а у меня нет.

Что делать?
Видимо не подключился js который отправляет в корзину. Он подключен в шаблоне корзины. В принципе, путь там задан не статично, через GetThisFolder - но проверьте свои шаблоны. Попробуйте полностью свои удалить (сохраниться перед этим) и снова использовать мою папку local
Цитата
Михаил Базаров пишет:
Видимо не подключился js который отправляет в корзину. Он подключен в шаблоне корзины. В принципе, путь там задан не статично, через GetThisFolder - но проверьте свои шаблоны. Попробуйте полностью свои удалить (сохраниться перед этим) и снова использовать мою папку local
Спасибо за ответ!
Скрипты подключены:
$APPLICATION->AddHeadScript($templateFolder."/js/jquery.form.js" );
$APPLICATION->AddHeadScript($templateFolder."/js/jquery.jgrowl.min.js" );

После проверки подключены ли скрипты, проделал следующее:
1. свою папку local заархивировал
2. Вашу залил
3. применил ваш шаблон - всплывающее окно "Товар добавлен..." - работает
4. Залили свой шаблон сайта в папку local (рядом с вашим), применил - не работает
5. скопировал свой шаблон корзины в ваш шаблон сайта, выбрал в компоненте свой шаблон корзины - работат

Получается дело не в шаблоне компонента, а в моем шаблоне сайта, но где копать?  Не пойму...
Скрипты есть, шаблон компонента рабочий... Что еще может повлиять на то что оно обновляется, видимо дело в обновлении страницы?
Цитата
Андрей Колчанов написал:
Цитата
Михаил Базаров  пишет:
Видимо не подключился js который отправляет в корзину. Он подключен в шаблоне корзины. В принципе, путь там задан не статично, через GetThisFolder - но проверьте свои шаблоны. Попробуйте полностью свои удалить (сохраниться перед этим) и снова использовать мою папку local
Спасибо за ответ!
Скрипты подключены:
$APPLICATION->AddHeadScript($templateFolder."/js/jquery.form.js" );
$APPLICATION->AddHeadScript($templateFolder."/js/jquery.jgrowl.min.js" );

После проверки подключены ли скрипты, проделал следующее:
1. свою папку local заархивировал
2. Вашу залил
3. применил ваш шаблон - всплывающее окно "Товар добавлен..." - работает
4. Залили свой шаблон сайта в папку local (рядом с вашим), применил - не работает
5. скопировал свой шаблон корзины в ваш шаблон сайта, выбрал в компоненте свой шаблон корзины - работат

Получается дело не в шаблоне компонента, а в моем шаблоне сайта, но где копать?  Не пойму...
Скрипты есть, шаблон компонента рабочий... Что еще может повлиять на то что оно обновляется, видимо дело в обновлении страницы?
Может быть jquery не подключен у вас. Проверьте наличие подключения в head шаблона

use Bitrix\Main\Page\Asset;
CJSCore::Init(array("jquery"));
Цитата
Михаил Базаров пишет:
use Bitrix\Main\Page\Asset;
CJSCore::Init(array("jquery" ;) );
Ага не нашел в head.
Скопировал из вашего фала header.php почти все строки из <head> :-)

Разработало! Спасибо большое!!!
Доброе утро! Сейчас заметил, почему то оформление надписи и иконки меняется после добавления в корзину.
Не, ну, должно было конечно поменяться но результат не тот :-)

Постараюсь по проще спросить :-)

В шаблоне компонента ваш код, был в одном из уроков:
Код
    <a href="/personal/cart/" title="Начать покупки" class="basket_top">
 <span class="fa"></span>
 <b>В корзине</b>
 <i>пока нет товаров</i>
 </a>
<?}else{?>
 <a href="/personal/cart/" title="В корзину" class="basket_top">
 <span class="fa"></span>
 <b>В корзине</b>
 <i><?=$quant?>
 <? echo getNumEnding($quant, array("товар", "товара", "товаров"));?>
 на <? echo SaleFormatCurrency($price, $defaultCurr); ?></i>
 </a>
<?}?>  
Скрипты не правил, но после нажатия в корзину вижу в инспекторе кода:
Код
<li id="basket-container">
    <a href="/personal/cart/"><span class="fa"></span> Корзина <i>2</i></a>
 
</li>
 
После обновлении страницы отображается как должно:
Код
<a href="/personal/cart/" title="В корзину" class="basket_top">
        <i class="far fa-shopping-cart"></i>
        <span>В корзине</span>
        <i id="cart-i">2            товара            на 33 098 руб.</i>
    </a>
 
Но надпись "В корзину", хотя должно быть "В корзине"
ЙЙЙЙееес, разобрался в файле /ajax/add2basket.php нужно указать свой шаблон, а не ajax.
Доброе утро, Михаил!
Было бы неплохо, чтобы при повторном нажатии на кнопку Избранное товар удалялся из избранного.
Причины:
1. По аналогии с кнопкой В сравнение;
2. И если посетитель сайта случайно нажал В избранное и не пришлось потом специально заходить в избранное и удалять не нужный товар.
Добрый день.
Все сделано по Вашей инструкции, но при добавлении в избранное, не передается название, а все остальное передается. При чем если добавлять в избранное из корзины, то все нормально.
Подскажите куда копать, а то всю голову сломал уже.
Михаил Базаров,  Здравствуйте!
Подскажите, пожалуйста, не получается самому догадаться в чем проблема.
Не получается вывести счетчик товаров в Избранное, уже 500 раз все проверил, все так же как и у вас, но не работает (((
.
Вставляю код
Код
<?
use Bitrix\Main\Loader;
    Loader::includeModule("sale");
     $delaydBasketItems = CSaleBasket::GetList(
        array(),
            array(
            "FUSER_ID" => CSaleBasket::GetBasketUserID(),
            "LID" => SITE_ID,
            "ORDER_ID" => "NULL",
            "DELAY" => "Y"
        ),
      array()
    );
    echo $delaydBasketItems;
?> 
 
Сайт рушится с надписью
Цитата

"При выполнении скрипта возникли ошибки"
.
Стираю из кода только
echo $delaydBasketItems;
Все снова становится на свои места.
Затем добавляю <?echo $delaydBasketItems;?>
во внутрь тега <i> на то место, где должен отображаться счетчик (как в уроке), и снова сайт летит нафиг с той же ошибкой.
Получается, что вывод $delaydBasketItems все ломает.

.
Сейчас без вывода $delaydBasketItems в теге <i> счетчик работает, отображается только при нажатии на кнопку Добавить в избранное в карточке товара, но как только обновляешь страницу счетчик сбрасывается на 0.
.
.
Подскажите, пожалуйста, хотя бы в какую сторону копать. Буду очень благодарен.
Может у кого на форуме была такая же проблема? Подскажите, ребята.
Как-то туго идет эта серия)))

При реализации отображения счетчика товаров в Корзине возникает такая ошибка на месте где должна быть корзина
Код
 'basket.small.bazarow' is not a component
Почему так может быть? Подскажите, кто-нибудь.
Цитата
3amok161 написал:
Как-то туго идет эта серия)))

При реализации отображения счетчика товаров в Корзине возникает такая ошибка на месте где должна быть корзина
Код
  'basket.small.bazarow' is not a component 
Почему так может быть? Подскажите, кто-нибудь.
В ajax обработчике, там где дублируется компонент корзины (к которому идет запрос за обновлением счетчика) убедитесь что подключен компонент именно из директории bazarow а не bitrix
Михаил, спасибо большое! Компонент подключал из bitrix, поэтому не работало.

Цитата
Михаил Базаров пишет:
Цитата
3amok161 написал:
Как-то туго идет эта серия)))

При реализации отображения счетчика товаров в Корзине возникает такая ошибка на месте где должна быть корзина
Код
   'basket.small.bazarow' is not a component  
Почему так может быть? Подскажите, кто-нибудь.
В ajax обработчике, там где дублируется компонент корзины (к которому идет запрос за обновлением счетчика) убедитесь что подключен компонент именно из директории bazarow а не bitrix
Здравствуйте Михаил. Не очень понятно, каким компонентом выводится список отложенных товаров, если корзиной то как компонент понимает, что выводить нужно отложенные а не товары в корзине?
Цитата
Александр написал:
Здравствуйте Михаил. Не очень понятно, каким компонентом выводится список отложенных товаров, если корзиной то как компонент понимает, что выводить нужно отложенные а не товары в корзине?
Вроде бы в видео прям подробно показал этот момент
Просто открывает сразу, таб с отложенными товарами (basket_item_dlayed вместо basket_items)
Здравствуйте! Столкнулся с проблемой, при добавлении товара в корзину из карточки товара почему-то не передается его кол-во. Класс к форме добавлен, jquery подключен. В консоли выдает ошибку Uncaught TypeError: $(...).ajaxForm is not a function не могу понять как ее исправить :(
Цитата
slonikandrew пишет:
Здравствуйте! Столкнулся с проблемой, при добавлении товара в корзину из карточки товара почему-то не передается его кол-во. Класс к форме добавлен, jquery подключен. В консоли выдает ошибку Uncaught TypeError: $(...).ajaxForm is not a function не могу понять как ее исправить
Косяк исправлен путем убирания галочки с подгрузки скриптов внизу страницы)
Здравствуйте. Подскажите пожалуйста какие компоненты нужно использовать, если на сайте нужны (помимо вывода товаров конечно) - только корзина, выбор доставки и оплата робокассой, но НЕ нужен личный кабинет пользователя (так руководство решило). Документация лес дремучий, а вы объясняете очень доходчиво, спасибо вам огромное!
Цитата
gepard09@inbox.ru написал:
Здравствуйте. Подскажите пожалуйста какие компоненты нужно использовать, если на сайте нужны (помимо вывода товаров конечно) - только корзина, выбор доставки и оплата робокассой, но НЕ нужен личный кабинет пользователя (так руководство решило). Документация лес дремучий, а вы объясняете очень доходчиво, спасибо вам огромное!
Все равно нужны теже компоненты что и для магазина. Кабинет просто не выводите ни куда и почтовые шаблоны подправте- убери ccskrb в них подчистите
Обнаружил один такой момент, что реализация Избранного через отложенные товары в корзине плохая идея. Один раз купил это избранное и это уже не избранное, надо заново добавлять товар в избранное (
Цитата
ztx@bk.ru написал:
Обнаружил один такой момент, что реализация Избранного через отложенные товары в корзине плохая идея. Один раз купил это избранное и это уже не избранное, надо заново добавлять товар в избранное (
Да, в последующих видео будем этот момент переделывать. Не через отложенные, а прям настоящее избранное.
Ну или, если нужно срочно. Используйте компонент catalog.item - в него просто передавайте ID товаров, которые отложились.
Добрый день, сделал все действия по созданию кнопки сравнения, input вывелся все нормально, но как только я нажимаю на input для добавления в список сравнения ничего не происходит и в консоле появляется ошибка


(index):414 Uncaught TypeError: Cannot read property 'checked' of null
   at compare_tov ((index):414)
   at HTMLInputElement.onchange ((index):495)

Судя по коду она происходит в этом месте:

var chek = document.getElementById('compareid_'+id);
   if (chek.checked) //происходит ошибка при проверке условия
       {
       //Добавить
       var AddedGoodId = id;
           $.get("/local/ajax/list_compare.php",
           {
               action: "ADD_TO_COMPARE_LIST", id: AddedGoodId},
               function(data) {
       $("#compare_list_count"[IMG].html(data);
        }
       );

Не подскажите в чем может быть проблема?
Цитата
Стас Ларин написал:
/local/ajax/list_compare.php

Вот тут /local/ajax/list_compare.php тот же самый шаблон сравнения, что и в шапке сайта?
Да, скпировал, только он у меня в футере, но на сколько я понимаю это не важно, так как в шапке сайта он туже ошибку выдает и вывел значение переменной chek  с помощью consol.log(chek) получает значение null
Простите за беспокойство и спасибо за решение!!! Все заработало, проблема оказалась в лишнем знаке при копировании, после более детального изучения кода и его удаления все заработало на ура!
Спасибо вам за модули)
А не знаете как из избранного не перемещать к корзину а делать копию? т.е. товар остается в избранном но такой же товар помещается в корзину?
У меня вообще нет кнопки в корзине "отложить"  я так понимаю что у меня этот функционал вообще не подключен, как его подключить?
Спасибо
Михаил, добрый день. Подскажите, пожалуйста, в странице избранного не возможно отправить товар в корзину... В чем может быть проблема... Сам код добавления в корзину работает, но только не на этой странице  :\
Сам код страницы "Избранные": https://yadi.sk/d/ORm8xQmt6b2HTA
Храни тебя господь за эти видосы, мужик. <3
Пожалуйста
Но лучше смореть новый курс https://bazarow.ru/video/video_new/seazon_1_2023/
Да, за деньгу малую. Но что такое 100 рублей в наши дни)
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить картинки
 

Блог-note: заметки разработчика

Обновление цен и остатков из текстового файла, в каталоге 1C-Битрикс.

Задача: прочитать txt-файл с ценами и остатками, который выгружает программа учета по FTP, и обновить эти данные в катал...

Помечаем новинки лейблом в каталоге битрикс

Достаточно часто, при разработке каталога товаров или интернет магазина на системе управления Битрикс, встает задача как...

Самодельная форма добавления элемента на API Битрикс

Компонент iblock.element.add.form написан таким образом, что вы не сможете (не попотев изрядно и не используя js) как уг...

Ajax форма обратной связи, реализация в битрикс

Иногда, на сайте требуется создать форму обратной связи, которая будет писать все данные в инфоблок. Способов реализации...

Переключатель валюты в каталоге 1С-Битрикс

Задача: Дать пользователю возможность самостоятельно выбирать валюту, в которой он хочет видеть цены, в разделе каталога...

Обновить страницу Inapbrowser в приложении Apache Cordova, при выходе из фона

Задача: Мобильное приложение, созданное на Apache Cordova должно перезагрузить текущую страницу, открытую с помощью плаг...

Дать пользователю возможность быстро отредактировать материал

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

Вывести артикул в печатную форму бланка заказа

Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе.

События вызываемые при сохранении заказа, в 1С-Битрикс

Иногда необходимо выполнить определенные действия с заказом при его изменении. Для этого можно использовать события OnS...