Перейти к содержанию
anatoliykg

Разделить отображения кол-ва товара и его стоимость в шапке

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

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

Так вот, мне, на самом деле удалось это сделать. Но есть один баг, который я не пойму как исправить. На сайте, пока я ничего в корзину не добавляю, все нормально отображается, а вот когда добавляю, цифра кол-ва товара заменяется целой фразой "товаров х - стоимость х (валюта) . 

Я понимаю, что это просто json но от этого мне не легче, не знаю, как сделать так, чтобы он в реальном времени отображал изменения и чтобы показывал кол-во товара и его общую стоимость отдельно.

Кто знает, как решить? Могу скриншотами снабдить, если очень надо. Я здесь новенький, поэтому если что не по правилам - напишите! 

Поделиться сообщением


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

так, а посмотреть, куда идет ajax и откуда возвращается "целая фраза"?..

кури catalog/controller/checkout/cart.php

Поделиться сообщением


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

Вот с этим файлом у меня и проблема. Я тупо не знаю, что с ним сделать. Если я совсем уберу там отображение,тогда на странице ничего не обновляется аяксом. а если разделю, то тоже непонять что будет. Или что-то будет? 

Поделиться сообщением


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

Я копался в catalog/controller/checkout/cart.php . Там есть две функции public function add() и public function remove() . Так вот в конце этих функций как раз лежат те самые строки, которые контролируют отображение кол-ва товара и его общей стоимости. Я их отформатировал так, чтобы отображалась только кол-во товара. И у меня это получилось.

Раньше строка выглядела так:

$json['total'] = $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total));
Теперь вот так.

$json['total'] = $this->cart->countProducts();
И да, у меня теперь при добавлении товара меняется кол-во и я был бы счастлив, если бы не одно НО.

Общая стоимость не меняется вместе с ним. Я знаю, что общая стоимость в этой функции выглядит вот так:

$this->currency->format($total)
, и я написал такой же json код, который должен отображать ее:

$json['total_amount'] = $this->currency->format($total);
Но не могу понять, как сделать так, чтобы теперь он тоже отображался на сайте. Изменено пользователем afwollis

Поделиться сообщением


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

теперь смотри

function addToCart(product_id, quantity) {
...
в common.js и

$('#button-cart').bind('click', function() {
...
в product.tpl

Поделиться сообщением


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

У меня похожий вопрос, так же разделил вывод цены и количества приобретенного товара. Не получается сделать так что бы изменения в корзине происходили без перезагрузки страницы. Нужно изменить common.js но у меня не выходит, буду рад любой помощи!

 

cart.tpl

<span class="text-shopping-count  price-count">
<?php echo $text_count; ?>
</span>

<span class="text-shopping-amount  price-amount">
<?php echo $total_amount; ?>
</span>

cart.php

$data['text_count'] = $this->cart->countProducts();

$data['total_amount'] = $this->currency->format($total);

common.js

// Cart add remove functions
var cart = {
    
'add': function(product_id, quantity) {
   
$.ajax({
url: 'index.php?route=soconfig/cart/add',
type: 'post',
data: 'product_id=' + product_id,
dataType: 'json',


success: function(json) {
$('.alert').remove();


if (json['redirect']) {
location = json['redirect'];
}
if (json['success']) {
addProductNotice(json['title'], json['thumb'], json['success'], 'success');
}
if (json['info']) {
 addProductNotice(json['title'], json['thumb'], json['info'], 'warning');
}
// Need to set timeout otherwise it wont update the total
setTimeout(function () {
$('#cart  .text-shopping-cart').html(json['total'] );
}, 100);


$('#cart > ul').load('index.php?route=common/cart/info ul li');


},


error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
},
'update': function(key, quantity) {
$.ajax({
url: 'index.php?route=checkout/cart/edit',
type: 'post',
data: 'key=' + key + '&quantity=' + (typeof(quantity) != 'undefined' ? quantity : 1),
dataType: 'json',


success: function(json) {
// Need to set timeout otherwise it wont update the total
setTimeout(function () {
   
$('#cart  .text-shopping-cart').html( json['total'] );
}, 100);


if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
location = 'index.php?route=checkout/cart';
} else {
$('#cart > ul').load('index.php?route=common/cart/info ul li');
}
}
});
},
'remove': function(key) {
$.ajax({
url: 'index.php?route=checkout/cart/remove',
type: 'post',
data: 'key=' + key,
dataType: 'json',


success: function(json) {
// Need to set timeout otherwise it wont update the total
setTimeout(function () {
$('#cart  .text-shopping-cart').html(json['total'] );
}, 100);
if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
location = 'index.php?route=checkout/cart';
} else {
$('#cart > ul').load('index.php?route=common/cart/info ul li');
}
}
});
}
}


var voucher = {
'add': function() {


},
'remove': function(key) {
$.ajax({
url: 'index.php?route=checkout/cart/remove',
type: 'post',
data: 'key=' + key,
dataType: 'json',
beforeSend: function() {
$('#cart > button').button('loading');
},
complete: function() {
$('#cart > button').button('reset');
},
success: function(json) {
// Need to set timeout otherwise it wont update the total
setTimeout(function () {
$('#cart > button').html('<span id="cart-total"><i class="fa fa-shopping-cart"></i> ' + json['total'] + '</span>');
}, 100);


if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
location = 'index.php?route=checkout/cart';
} else {
$('#cart > ul').load('index.php?route=common/cart/info ul li');
}
}
});
}
}

 

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.