Оценок: 1
Изменение отображения модуля корзины при отсутствии товаров

Изменение отображения модуля корзины при отсутствии товаров

По умолчанию в Opencart модуль корзины при отсутствии товаров выводит их количество и стоимость, которые разумеется равны нулю. Кого то это устраивает, кому то не нравится.. Если количество и стоимость товаров нужно показать только при наличии их в корзине, а при отсутствии вывести что то другое (сообщение, изображение) понадобится внести небольшие изменения в шаблон модуля корзины (добавим - что нужно вывести) и в скрипт common.js (что бы после внесенных изменений все работало как надо).

Для начала внесем небольшие изменения в шаблон мудуля - /catalog/view/theme/default/template/module/cart.tpl:

Необходимо, что бы при наличии товаров выводилась корзина, при их отсутствии что то другое. В шаблоне уже есть проверка на наличие товара, только сделана она для всплывающего окна с информацией о добавленных товарах - если их нет - выводит сообщение об отсутствии. Этим и воспользуемся. 

В начале:

<div id="cart">
<div class="heading">
<h4><?php echo $heading_title; ?></h4>
<a><span id="cart-total"><?php echo $text_items; ?></span></a></div>
<div class="content">
<?php if ($products || $vouchers) { ?>
<div class="mini-cart-info">

 Меняем на:

<div id="cart">
<div class="heading">
<?php if (!$products) { ?>
Пусто здесь однако...
</div>
<?php } else { ?>
<h4><?php echo $heading_title; ?></h4>
<a><span id="cart-total"><?php echo $text_items; ?></span></a></div>
<div class="content">
<div class="mini-cart-info">

 В проверке внес небольшие изменения - оставил только проверку на наличие товаров и если их нет, то будет выведено "Пусто здесь однако..." (замените на что-нибудь свое), если же товары есть - выведет корзину. 

Теперь в самом низу - закроем в нужном месте проверку и удалим сообщение об отсутствии товаров (т.к. теперь если корзина отображена, то товары там точно есть).

Меняем:

</a></div>
<?php } else { ?>
<div class="empty"><?php echo $text_empty; ?></div>
<?php } ?>
</div>
</div>

На вот это:

</a></div>
</div>
<?php } ?>
</div>

 На этом правка шаблона модуля закончена, при отсутствии товаров выводится сообщение, при наличии корзина, но при добавлении не происходит автоматического обновления и результат виден только после того как обновим страницу, или перейдем на другую. Что бы это исправить, необходимо внести изменения в файл /catalog/view/javascript/common.js в функцию addToCart (строка 113):

 В функции addToCart находим следующее (строка 133):

$('#cart-total').html(json['total']);

И меняем на:

$('#cart').load('index.php?route=module/cart #cart > *');

 Теперь все работает как надо. :)

Оценок: 1
Надежный хостинг VPS серверов
  • Свои ISO образы
  • VDS с оплатой раз и навсегда
  • Аренда VDS на любой срок, с оплатой по дням
  • Большое разнообразие конфигураций
  • Дата-центры в ЕС и России
+ скидка 10%

Комментарии (2)

  1. Показать код
    $('#cart').load('index.php?route=module/cart #cart > *');
    Этот код не помогает, корзина меняется только после перезагрузки, окстор 15512

    Дима 22 февраля 2017, 21:39 0
    • как для 2.0 сделать?

      Spec 08 марта 2016, 15:12 0