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

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

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

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

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

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

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

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

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

 

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

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

на

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

из файла app/webroot/js/vamshop.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;
        }

    });

создаем фаил 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;
}
Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...