Здравствуйте. Подскажите пожалуйста… я использую $smarty.session.cart.products для определения наличия товара из категории в корзине.
При добавлении товара в корзину, данные карты обновляются, а данные переменной конечно же нет.
Но при обновлении страницы данные $smarty.session.cart.products тоже не меняются, только при очистке кеша. Где взять актуальные данные? Или подскажите пожалуйста в какую сторону копать?
При добавлении в корзину происходит обновление данных без перезагрузки по AJAX.
Что можно попробовать сделать.
Ваш код обернуть в следующий контейнер: <div id="cart_status_update_my_block"> {if $smarty.session.cart.products} Товары есть в корзине {else}В корзине пусто{/if} <!--cart_status_update_my_block--></div>
По идентификатору cart_status* как раз должен обновиться контейнер.
Сейчас я его вывожу в верху страницы категории просто чтоб видеть результат.
Понимаю что при добавлении по нажатию на кнопку “В корзину” происходит Ajax запрос.
Немогу понять почему при обновлении этой же страницы (через F5 или Ctrl+R) данные не обновляются.
Подскажите пожалуйста как это решить?
Прошу прощения если мои вопросы выглядят тупо. Я недавно взялся за CS-Cart и еще слабо ориентируюсь в нём. Изучать приходится прямо в процессе.
Вставляю вышеуказанный код без изменений в grid_list.tpl перед < div class=“grid-list” >, пробую добавить товар в карзину, после чего обновляю страницу, но результат остается прежним. При этом если я сменю категорию результат обновляется. А при возвращении в категорию из которой ушел результат возвращается к прежнему (старому) значению.
Находил по данной похожей теме ветку на форуме, но ненашел решения.
В таком варианте работает как нужно. Правда разработчики предупреждают что это надо в дальнейшем отключить.
Но как тогда получать обновленный список товаров в карзине? Ведь пользователь может оставаясь на этой же странице и обновив её получить некорректный результат (кнопку “В корзину” вместо “уже в корзине” ).
Если это как-то поможет вот ссылка: https://spclimate.ru/kondicionery/
Прямо после блока сортировки, если товары есть в корзине, выводятся их id.
Добавляя (или удаляя) товары и после этого обновляя страницу, результат остается прежним.
Это кажется немного странным, потому что после обновления страницы (например через F5) блок корзины получает актуальные данные.
Возможно есть способ брать (или пердавать) именно те данные?
UPD^ Обратил внимание что при удалении товара из корзины список категории обновляется сразу, а при добавлении товара такого обновления не происходит. (Это при всё включенном АвтоОбновлении)
Кнопка “В корзину” была прописана ссылкой, не подключением темплейта кнопки. Это связанно именно с этим. Так как обычный вызов кнопки добавления отчего-то не реагировал никаким образом на нажатия.
Где-то в соседней ветке я просил чтоб мне помогли с этой проблемой разобраться и рабочим оказался только такой вот вариант.
Мне очень жаль что я отнимаю ваше время.
Дело в том что подобный код (сейчас я его вставил вместо “своей” кнопки) вообще не реагирует на нажатия мышью.
Добавляем товары в корзину, при этом кнопку выбраного товара меняем на " Уже в корзине" (сейчас отключено).
При обновлении страницы кнопка у товара который добавлен в корзину, должна оставаться “Уже в корзине”.
Пробую делать так как писал вначале ветки.
Для примера вывожу список id товаров которые в корзине из $smarty.session.cart.products (как в cart_content.tpl) но получаю старые данные которые обновляются только при очистке кеша.
Собственно мне нужно получить (после перезагрузки страницы) свежие данные из корзины.
Возможно это получится сделать через какую-нибудь capture или дописать в контролере котегории хук?
Помогите пожалуйста. Натолкните на хоть какую нибудь мысль?
И если я правильно понимаю это должно работать при выключенном Авто Обновлении файлов темы.
Этого было бы достаточно, но к сожалению дело в том, что $smarty.session.cart.products после добавления товара в корзину остается прежним и после обновления страницы. Т.е. если я добавлю товар и обновлю страницу, кнопка снова будет по “В корзину”. Сама корзина обновляется и после перезагрузки страницы всё в ней отображается верно. А в нижней части (в сетке категории) остается информация которая и была.
Этот параметр указыввет id блока который должен обновляться. У Вас получается обновляется только блок с id = cart_status <div id="cart_status"> <!--cart_status--></div>
Вам нужно заключить часть кода шаблона в котором переопределяется это значение в <div id="cart_status"> <!--cart_status--></div>
Либо с другим id но тогда нужно в кнопке прописать data-ca-target-id=“cart_status*,my_id”
Ну и конечно если в фале шабона включается другой файл через include и явно передается параметр show_add_to_cart = true то Вам нужно перезаписать этот файл с show_add_to_cart = $my_var и передавать в него актуальный флаг - true или false
UPD. Примечание data-ca-target-id - не вешается на button. У Вас тип submit - отправка формы. Поэтому в форме нужен <input type="hidden" name="result_ids" value="cart_status*,my_id" />