Перейти к содержимому


Фотография
- - - - -

Переделка корзины


Лучший Ответ SmetDenis , 15 October 2013 - 22:52

i001 сказал(а) 13 Окт 2013 - 13:09:

Решил вывести в модуле корзины товары. Товары туда поставить сложности не возникло.
Интересует возможность вставки элемента jbpriceadvanced c функцией добавить и удалить из корзины. Т.е. грубо говоря получить в модуле мини-тизеры, которые будут правильно работать. Подскажите пожалуйста направление как это сделать?

Добрый день.

Может для удаления проще написать отдельный jQuery скрипт?

Ссылку на удаление не сложно получить из PHP
  1. <?php
  2.  
  3. $removeUrl = $this->app->jbrouter->element($elementId, $itemId, 'ajaxRemoveFromCart');
  4.  
  5. // делаем ссылку-крестик
  6. echo '<a href="'.$removeUrl.'" class="jsRemoveItem">X</a>';
В JS пишем следующее
  1. $(document).on('click', '.jsRemoveItem', function () { // событие через делегирование
  2. var $link = $(this);
  3. $.post($link.attr('href'), {}, function(){
  4. $.fn.JBZooPriceReloadBasket(); // вызывает перезагрузку модуля корзины
  5. $link.closest('.jbzoo_item').remove(); // удаляем материал из модуля (тогда перезагрузка модуля не нужна)
  6. });
  7. });
Есть важная тонкость. После обновления корзины все бинды событий JS будут удалены.
Поэтому их нужно снова вешать внутри колбека после ajax запроса.

По аналогии можно сделать и добавление. Смысл тот же самый, то ссылка генерируется с ключом "ajaxAddToCart".

PS Селекторы поменяйте для себя, это экспериментальная версия скрипта. Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 18

#11 Sliapy

Sliapy

Отправлено 15 October 2013 - 16:45

Ладно, не будем разводить оффтоп - будем ждать Дениса :)


  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#12 i001

i001

Отправлено 15 October 2013 - 17:03

Хорошо) 


  • 0

#13 SmetDenis

SmetDenis

Отправлено 15 October 2013 - 22:52   Лучший Ответ

i001 сказал(а) 13 Окт 2013 - 13:09:

Решил вывести в модуле корзины товары. Товары туда поставить сложности не возникло.
Интересует возможность вставки элемента jbpriceadvanced c функцией добавить и удалить из корзины. Т.е. грубо говоря получить в модуле мини-тизеры, которые будут правильно работать. Подскажите пожалуйста направление как это сделать?

Добрый день.

Может для удаления проще написать отдельный jQuery скрипт?

Ссылку на удаление не сложно получить из PHP
  1. <?php
  2.  
  3. $removeUrl = $this->app->jbrouter->element($elementId, $itemId, 'ajaxRemoveFromCart');
  4.  
  5. // делаем ссылку-крестик
  6. echo '<a href="'.$removeUrl.'" class="jsRemoveItem">X</a>';
В JS пишем следующее
  1. $(document).on('click', '.jsRemoveItem', function () { // событие через делегирование
  2. var $link = $(this);
  3. $.post($link.attr('href'), {}, function(){
  4. $.fn.JBZooPriceReloadBasket(); // вызывает перезагрузку модуля корзины
  5. $link.closest('.jbzoo_item').remove(); // удаляем материал из модуля (тогда перезагрузка модуля не нужна)
  6. });
  7. });
Есть важная тонкость. После обновления корзины все бинды событий JS будут удалены.
Поэтому их нужно снова вешать внутри колбека после ajax запроса.

По аналогии можно сделать и добавление. Смысл тот же самый, то ссылка генерируется с ключом "ajaxAddToCart".

PS Селекторы поменяйте для себя, это экспериментальная версия скрипта.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#14 i001

i001

Отправлено 16 October 2013 - 09:25

спасибо, а как получить из модуля корзины $elementId.

$this из под модуля не работает. Надо обращаться как то по другому.


  • 0

#15 SmetDenis

SmetDenis

Отправлено 16 October 2013 - 09:50

В вашем случае только хардкодом.
  1. $elementId = '<ELEMENT_ID>';

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#16 i001

i001

Отправлено 16 October 2013 - 10:38

Денис, а то что вы дали это точно для  JBPriceAdvance?? 

почему то не работает...


  • 0

#17 i001

i001

Отправлено 16 October 2013 - 13:12

получилось вот так

  1. <? $removeUrl = $zoo->jbrouter->element('1', $item['itemId'], 'ajaxRemoveFromCart'); ?>
  2. <a rel="nofollow" href="<?= $removeUrl ?>" class="jsRemove jbzoo-button remove-button jsRemoveQuantity btn-mini minus" title="-">-</a>
  3.  
  4. $('.jsRemove').click(function () { // событие через делегирование
  5. var $link = $(this);
  6. $.post($link.attr('href'), {}, function(){
  7. $.fn.JBZooPriceReloadBasket(); // вызывает перезагрузку модуля корзины
  8. });
  9. });

Корзина перегружается, но товары не удаляются. 


  • 0

#18 SmetDenis

SmetDenis

Отправлено 16 October 2013 - 13:49

Почему у вас elementId = 1 ?
Что вернул ajax запрос?

i001 сказал(а) 16 Окт 2013 - 09:38:

Денис, а то что вы дали это точно для  JBPriceAdvance??

Да, точно.
  • 1
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#19 i001

i001

Отправлено 16 October 2013 - 14:19

Во всем разобрался, спасибо большое за помощь. 


  • 1




Click to return to top of page in style!