Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


anatoliykg

Recommended Posts

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

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

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

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

Надіслати
Поділитися на інших сайтах


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

Надіслати
Поділитися на інших сайтах


Я копался в 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
Надіслати
Поділитися на інших сайтах


  • 5 months later...

У меня похожий вопрос, так же разделил вывод цены и количества приобретенного товара. Не получается сделать так что бы изменения в корзине происходили без перезагрузки страницы. Нужно изменить 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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.