Jump to content


Photo
- - - - -

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


Best Answer SmetDenis , 15 October 2013 - 22:52

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

Добрый день.

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

Ссылку на удаление не сложно получить из PHP
<?php

$removeUrl = $this->app->jbrouter->element($elementId, $itemId, 'ajaxRemoveFromCart');

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

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

PS Селекторы поменяйте для себя, это экспериментальная версия скрипта. Go to the full post


  • This topic is locked This topic is locked
18 replies to this topic

#11 Sliapy

Sliapy
  • JBZoo User (rus)
  • User rate: 50.5
  • posts: 6393
  • topics: 15

Posted 15 October 2013 - 16:45

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


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

#12 i001

i001
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 46.4
  • posts: 972
  • topics: 76

Posted 15 October 2013 - 17:03

Хорошо) 


  • 0

#13 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 15 October 2013 - 22:52   Best Answer

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

Добрый день.

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

Ссылку на удаление не сложно получить из PHP
<?php

$removeUrl = $this->app->jbrouter->element($elementId, $itemId, 'ajaxRemoveFromCart');

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

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

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



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


#14 i001

i001
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 46.4
  • posts: 972
  • topics: 76

Posted 16 October 2013 - 09:25

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

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


  • 0

#15 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 16 October 2013 - 09:50

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

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



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


#16 i001

i001
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 46.4
  • posts: 972
  • topics: 76

Posted 16 October 2013 - 10:38

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

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


  • 0

#17 i001

i001
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 46.4
  • posts: 972
  • topics: 76

Posted 16 October 2013 - 13:12

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

  <? $removeUrl = $zoo->jbrouter->element('1', $item['itemId'], 'ajaxRemoveFromCart'); ?>
                            <a rel="nofollow" href="<?= $removeUrl ?>" class="jsRemove jbzoo-button remove-button jsRemoveQuantity btn-mini minus" title="-">-</a>

        $('.jsRemove').click(function () { // событие через делегирование
        
            var $link = $(this);
            $.post($link.attr('href'), {}, function(){
                $.fn.JBZooPriceReloadBasket(); // вызывает перезагрузку модуля корзины
            });
        });

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


  • 0

#18 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 16 October 2013 - 13:49

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

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

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



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


#19 i001

i001
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 46.4
  • posts: 972
  • topics: 76

Posted 16 October 2013 - 14:19

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


  • 1




Click to return to top of page in style!