Jump to content
Sign in to follow this  
anatoliykg

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

Recommended Posts

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Я копался в 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);
Но не могу понять, как сделать так, чтобы теперь он тоже отображался на сайте. Edited by afwollis

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.