在woocommerce单品页面中显示总订单金额

时间:2014-05-10 12:34:15

标签: php jquery wordpress woocommerce woothemes

我正在为我的一家公司开发一个非常简单的网站,使用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();
    });
});

0 个答案:

没有答案