Перейти к содержанию
Форум поддержки пользователей VamShop

Рекомендуемые сообщения

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

Одна (с лева) полностью работает на Ajax (т.е. добавляются без перезагрузки страницы), а та, которая в верхнем Main Menu (cart-content-box-pull), показывает товар только перезагрузки страницы.

В админке Настройки-Магазин "Разрешить Ajax" поставил "Да" , но изменений не заметил. Верхняя корзина, для отображения товаров, просит перезагрузку.

Как включить (сделать) Ajax для верхней корзины, что бы товары появлялись там без перезагрузки страницы, как в VamShop1?

И где хранятся js скрипты от этих корзин?

Ссылка на сообщение
Поделиться на другие сайты
  • 2 weeks later...

Инструкция как допилить Ajax  для корзины в верхнем меню при условии, что боковая корзина не нужна.

 

в /app/Controller/CartController.php меняем 

  1. if ($this->RequestHandler->isAjax()) {
  2. $this->Smarty->display("{shopping_cart template='cart-content-box'}");
  3. die();
  4. } else {
  5. $this->redirect('/product/' . $content['Content']['alias'] . $config['URL_EXTENSION']);
  6. }

на

  1. if ($this->RequestHandler->isAjax()) {
  2. $this->Smarty->display("{shopping_cart template='cart-content-box-pull'}");
  3. die();
  4. } else {
  5. $this->redirect('/product/' . $content['Content']['alias'] . $config['URL_EXTENSION']);
  6. }

из файла app/webroot/js/vamshop.js удаляем 

  1. // Shoping cart SHOW/HIDE
  2. // -----------------------------------------------------------------------------
  3. $('.shopping-cart .cart').hover(
  4. function(){
  5. $('.shopping-cart .cart-dropdown').show();
  6. },
  7. function (){
  8. $('.shopping-cart .cart-dropdown').hide();
  9. }
  10. );
  11. $('.shopping-cart .cart-dropdown').bind({
  12. mouseenter: function(){
  13. $(this).show();
  14. },
  15. mouseleave: function(){
  16. $(this).hide();
  17. }
  18. });
  19.  
  20. $('ul.icons.check a').click(function(){
  21.  
  22. if ($(this).closest('li').hasClass('on')) {
  23. $(this).closest('li').removeClass('on');
  24. return false;
  25. }
  26.  
  27. else {
  28. $(this).closest('li').addClass('on');
  29. return false;
  30. }
  31.  
  32. });

создаем фаил app/webroot/js/cart.js с кодом

    // Shoping cart SHOW/HIDE
    // -----------------------------------------------------------------------------
    $('.shopping-cart .cart').hover(
        function(){
            $('.shopping-cart .cart-dropdown').show();
        },
        function (){
            $('.shopping-cart .cart-dropdown').hide();
        }
    );
    $('.shopping-cart .cart-dropdown').bind({
        mouseenter: function(){
            $(this).show();
        },
        mouseleave: function(){
            $(this).hide();
        }
    });

    $('ul.icons.check a').click(function(){

        if ($(this).closest('li').hasClass('on')) {
            $(this).closest('li').removeClass('on');
            return false;
        }

        else {
            $(this).closest('li').addClass('on');
            return false;
        }

    });

в Админке - Оформление - Микро шаблоны открывает cart-content-box-pull  и конце прописываем 

<script type="text/javascript" src="{base_path}/js/cart.js"></script>

В основном шаблоне метку {shopping_cart template='cart-content-box-pull'} "обёртываем" в блок <div id="shopping-cart-box"></div> , т.е. у на должно получиться 

<div id="shopping-cart-box">
    {shopping_cart template='cart-content-box-pull'}
</div>

=====================================================

 

Возможно можно и как-нибудь по другому сделать сверху Аякс корзину, поэтому кому надо думайте и решайте сами ;)

Ссылка на сообщение
Поделиться на другие сайты

И все же это костыль, который "на коленках" получи доделать. До полноценной Аякс корзины не дотягивает.

Надеюсь разработчики в ближайшее время исправят этот косяк и сделают полноценную Аякс корзину.

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

Мне кажется, что есть более изящное решение, но мне было замарачиться лень :)

Ссылка на сообщение
Поделиться на другие сайты

Ещё в /app/Vendor/smarty/vam_plugins/functions.shopping_cart.php закомментировать:

// Quit if we passed the param and the cart is empty
if ((!isset($params['showempty']))||($params['showempty'] == false)) {
//echo '<div id="shopping-cart-box"></div>';
return;
}
Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...