[Помогите] Скрывать/отображать корзину при добавлении/удалении товаров

Тема в разделе "OpenCart", создана пользователем alex5151, 1 окт 2013.

  1. alex5151

    alex5151

    Регистрация:
    15 ноя 2012
    Сообщения:
    166
    Симпатии:
    27
    Цель:
    по умолчанию - корзина не отображается.
    при добавлении первого и последующих товаров в корзину - корзина отображается.
    при удалении из корзины всех товаров - корзина не отображается.

    Решение:
    в \catalog\view\theme\default\template\module\cart.tpl
    добавил
    PHP:
    <?php if($this->cart->hasProducts()) {?>
        <style type="text/css">
            #cart {display: block;}
        </style>
    <?php } else { ?>
        <style type="text/css">
            #cart {display: none;}
        </style>
    <? }?>

    !Проблемы:

    корзина скрывается/отображается только после перезагрузки страницы

    Неудавшиеся решение проблемы:

    в \catalog\view\javascript\common.js в функцию addToCart после if (json['success']) {
    добавил
    $('#cart').css('display', 'block');

    Прошу тыкнуть в то место, где не так.
    Или показать альтернативный способ.
     
  2. Bogdan

    Bogdan

    Регистрация:
    25 фев 2013
    Сообщения:
    228
    Симпатии:
    104
    Да, вроде как всё верно, но попробуйте $('#cart').css('display', 'block'); вставить просто в теле функции success: function(json) {, не помещайте внутрь блока if
     
  3. halfhope

    halfhope

    Регистрация:
    31 дек 2012
    Сообщения:
    284
    Симпатии:
    309
  4. alex5151

    alex5151

    Регистрация:
    15 ноя 2012
    Сообщения:
    166
    Симпатии:
    27
    Проблему решил переносом
    Код:
        <style type="text/css">
            #cart {display: none;}
        </style>
    в stylesheet.css
    Предполагаемая причина:
    более высокий приоритет у стилей, прописанных в шаблоне чем у тех, которые добавляются через js
    halfhope, спасибо, тоже неплохой способ, но остановлюсь на этом.
     
  5. Bogdan

    Bogdan

    Регистрация:
    25 фев 2013
    Сообщения:
    228
    Симпатии:
    104
    Теперь при переходе на другой товар/категорию, корзина не будет показываться, независимо от того есть в ней товар или нет
     
  6. alex5151

    alex5151

    Регистрация:
    15 ноя 2012
    Сообщения:
    166
    Симпатии:
    27
    Вы не правы, #cart {display: block;} в шаблоне имеет приоритет выше чем #cart {display: none;} в стилях. Поэтому если корзина содержит хотя бы 1 товар, она никуда не исчезнет.
     
  7. Bogdan

    Bogdan

    Регистрация:
    25 фев 2013
    Сообщения:
    228
    Симпатии:
    104
    Ну по такой логике изначально не должно было быть проблемы, ведь выводя #cart {display: none;} в шаблоне это имело больший приоритет, чем #cart {display: block;} в стилях ....
     
  8. alex5151

    alex5151

    Регистрация:
    15 ноя 2012
    Сообщения:
    166
    Симпатии:
    27
    стили, добавляемые через js, заменяют только стили из stylesheet.
    стили, прописанные в шаблоне, не изменяются.
    в этом и была проблема.
     
  9. Bogdan

    Bogdan

    Регистрация:
    25 фев 2013
    Сообщения:
    228
    Симпатии:
    104
    Понятно. Хотя как-то странно... и то и другое просто блоки css. Кстати, можно было прямо к диву прикручивать style="....". Элементные стили - приоритетней.
     
  10. alex5151

    alex5151

    Регистрация:
    15 ноя 2012
    Сообщения:
    166
    Симпатии:
    27
    Вот именно, странно. Уйму времени убил чтобы найти причину.
     
  11. gnommong

    gnommong

    Регистрация:
    29 июн 2013
    Сообщения:
    175
    Симпатии:
    194
    Есть модуль Lazy2 checkout. Это одна из функций модуля - корзины нет, пока нет товара.
     
  12. Bogdan

    Bogdan

    Регистрация:
    25 фев 2013
    Сообщения:
    228
    Симпатии:
    104
    Ну не знаю ... Ставить модуль из-за такой функции ...
    Да и ТС проблему уже решил.
     
  13. gnommong

    gnommong

    Регистрация:
    29 июн 2013
    Сообщения:
    175
    Симпатии:
    194
    Да там и модуль сам по себе достаточно интересен. Шаги оформления подгружаются постепенно. Надо тестировать влияние на конверсию.