Opencart - jQuery cart total update - 修改输出

Opencart - jQuery cart total update - amend output

本文关键字:修改 输出 update cart jQuery Opencart total      更新时间:2023-09-26

运行最新版本的OpenCart,在product.tpl中,底部的javascript中有以下代码行:

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

此行更新了购物车总数,而无需重新加载页面,因此$('#cart-total').html(json['total']);输出<span id="cart-total">6 item(s) - $693.50</span>

但是,我已经自定义了 cart.tpl 模块和 cart.php 语言文件,以略微不同地显示购物车输出,以便它输出如下:

<span id="cart-total">
     <div class="mini-cart-items">6 Items</div>
     <div class="mini-cart-total">Your total is $693.50</div>
</span>

因此,出于某种原因,当$('#cart-total').html(json['total']);更新购物车总数时,它会删除我在其中的两个div,只显示没有我设置的格式的信息。

是否可以更新 javascript 以使其不会剥离信息?

如果需要上下文,我可以提供更多代码。

EDTI:这是$('#cart-total').html(json['total']);所在的整个javascript部分:

if (json['success']) {
                $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
                $('.success').fadeIn('slow');
                $('#cart-total').html(json['total']);
                $('html, body').animate({ scrollTop: 0 }, 'slow'); 
            }

当前代码,编辑如下所述:

        if (json['success']) {
            $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
            $('.success').fadeIn('slow');
            console.log(json['total']);
            var output = $(json['total']).text().split('-');
            $('.mini-cart-items').html(output[0]);
            $('.mini-cart-total').html('Your total is ' + output[1]);
            $('html, body').animate({ scrollTop: 0 }, 'slow'); 
        }       
如果您

json['total']只包含数字金额,那么您可以尝试以下操作:

$('#cart-total .mini-cart-total').empty().html('Your total is $' + json['total']);

根据您的编辑:

var output = $(json['total']).text().split('-');
$('.mini-cart-items').html(output[0]);
$('.mini-cart-total').html('Your total is ' + output[1]);

演示

我也遇到了麻烦,我找到了解决问题的方法。

如何在目录/控制器/结帐/购物车中找到 json['total'].php

$json['total'] = sprintf($this->language->get('text_items') .......

但这并不那么重要,"text_items"放在两个地方

catalog/language/russian/module/cart.php

catalog/language/russian/checkout/cart.php

这很有趣,首先使用模块文件,使用 JSON 结帐文件

这是我的"text_items",我把它放在两种语言的文件中

// Text
$_['text_items'] = 'In cart: <div class="header-product">%s product</div> summ %s';
以上

工作,好吧,你总是可以给你的div一个id

<div id="mini-cart-total" class="mini-cart-total">Your total is $574.00</div>

在您的脚本中:

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

在一天结束时,$('#id').html(str)将ID中的所有HTML替换为您传入的内容。

我已经解决了这个问题

setTimeout(function(){
  $('#cart-total').html('Your total is $' + json['total']); 
}, 100);

只需添加延迟