我正在为我的一家公司开发一个非常简单的网站,使用woocommerce和WordPress作为CMS。 我真的很喜欢产品 - 单页重力表单如何创建一个显示总金额的字段,如果选择任何可选服务,则自动更新,然后再转到结帐页面。 但我不想使用引力形式,因为它有一些局限性。相反,我为此选择了woocommerce,一切顺利,但我没有在woocommerce中获得此功能。在此发布此帖子之前,我已尽可能多地研究并最终找到了一个名为"产品附加组件"的插件/扩展程序。通过宇主题。我现在在我的网站上有几种产品,每种产品都有额外的价格。 该插件显示两个部分中的总订单金额1.选项总计和2.总计(基本价格+期权价格)。 这很酷,但问题是它在我选择任何选项之前都没有显示总金额。 请访问单个产品页面,以便您更好地理解它。 http://edencleaners.sg/landed-property/
如果选择了选项,是否可以通过自动更新永久显示订单总金额?你知道的是否有任何脚本或插件?或者无论如何我可以更改当前插件的脚本?
我发布了js代码,我认为这些代码用于计算并通过产品插件插件显示总金额。
jQuery(document).ready(function($) {
function init_addon_totals() {
$('.cart').on( 'keyup change', '.product-addon input, .product-addon textarea', function() {
if ( $(this).attr('maxlength') > 0 ) {
var value = $(this).val();
var remaining = $(this).attr('maxlength') - value.length;
$(this).next('.chars_remaining').find('span').text( remaining );
}
} );
$('.cart').find('.addon-custom, .addon-custom-textarea').each(function(){
if ( $(this).attr('maxlength') > 0 ) {
$(this).after('<small class="chars_remaining"><span>' + $(this).attr('maxlength') + '</span> ' + woocommerce_addons_params.i18n_remaining + '</small>' );
}
} );
$('.cart').on( 'change', '.product-addon input, .product-addon textarea, .product-addon select, input.qty', function() {
var $cart = $(this).closest('.cart');
$cart.trigger('woocommerce-product-addons-update');
} );
$('body').on('found_variation', '.variations_form', function( event, variation ) {
var $variation_form = $(this);
var $totals = $variation_form.find('#product-addons-total');
if ( $( variation.price_html ).find('.amount:last').size() ) {
product_price = $( variation.price_html ).find('.amount:last').text();
product_price = product_price.replace( woocommerce_addons_params.currency_format_thousand_sep, '' );
product_price = product_price.replace( woocommerce_addons_params.currency_format_decimal_sep, '.' );
product_price = product_price.replace(/[^0-9\.]/g, '');
product_price = parseFloat( product_price );
$totals.data( 'price', product_price );
}
$variation_form.trigger('woocommerce-product-addons-update');
});
$('.cart').bind( 'woocommerce-product-addons-update', function() {
var total = 0;
var $cart = $(this);
var $totals = $cart.find('#product-addons-total');
var product_price = $totals.data( 'price' );
var product_type = $totals.data( 'type' );
// Move totals
if ( product_type == 'variable' ) {
$cart.find('.single_variation').after( $totals );
}
$cart.find('.addon').each(function() {
var addon_cost = 0;
if ( $(this).is('.addon-custom-price') ) {
addon_cost = $(this).val();
} else if ( $(this).is('.addon-input_multiplier') ) {
if( isNaN( $(this).val() ) || $(this).val() == "" ) { // Number inputs return blank when invalid
$(this).val('');
$(this).closest('p').find('.addon-alert').show();
} else {
if( $(this).val() != "" ){
$(this).val( Math.ceil( $(this).val() ) );
}
$(this).closest('p').find('.addon-alert').hide();
}
addon_cost = $(this).data('price') * $(this).val();
} else if ( $(this).is('.addon-checkbox, .addon-radio') ) {
if ( $(this).is(':checked') )
addon_cost = $(this).data('price');
} else if ( $(this).is('.addon-select') ) {
if ( $(this).val() )
addon_cost = $(this).find('option:selected').data('price');
} else {
if ( $(this).val() )
addon_cost = $(this).data('price');
}
if ( ! addon_cost )
addon_cost = 0;
total = parseFloat( total ) + parseFloat( addon_cost );
} );
var qty = parseFloat( $cart.find('input.qty').val() );
if ( total > 0 && qty > 0 ) {
total = parseFloat( total * qty );
var formatted_addon_total = accounting.formatMoney( total, {
symbol : woocommerce_addons_params.currency_format_symbol,
decimal : woocommerce_addons_params.currency_format_decimal_sep,
thousand : woocommerce_addons_params.currency_format_thousand_sep,
precision : woocommerce_addons_params.currency_format_num_decimals,
format : woocommerce_addons_params.currency_format
} );
if ( product_price ) {
product_total_price = parseFloat( product_price * qty );
var formatted_grand_total = accounting.formatMoney( product_total_price + total, {
symbol : woocommerce_addons_params.currency_format_symbol,
decimal : woocommerce_addons_params.currency_format_decimal_sep,
thousand : woocommerce_addons_params.currency_format_thousand_sep,
precision : woocommerce_addons_params.currency_format_num_decimals,
format : woocommerce_addons_params.currency_format
} );
}
html = '<div class="product-addon-totals"><div class="rb-option-total"><label>' + woocommerce_addons_params.i18n_addon_total + '</label><span class="amount amount-alt">' + formatted_addon_total + '</span><input type="hidden" class="amount-alt" value="' + formatted_addon_total + '" /></div>';
if ( formatted_grand_total ) {
html = html + '<div class="rb-grand-total"><label>' + woocommerce_addons_params.i18n_grand_total + '</label><span class="amount">' + formatted_grand_total + '</span></div>';
}
html = html + '</div>';
$totals.html( html );
} else {
$totals.empty();
}
$('body').trigger('updated_addons');
} );
$('.cart').find('.addon-custom, .addon-custom-textarea, .product-addon input, .product-addon textarea, .product-addon select, input.qty').change();
}
init_addon_totals();
$( '.variations_form .product-addon' ).closest( '.cart' ).find( '.variations select' ).change();
// Quick view
$('body').on('quick-view-displayed', function() {
init_addon_totals();
});
});