如何使用一步结帐模块在magento 2结帐和购物车中隐藏产品

如何使用一步结帐模块在magento 2结帐和购物车中隐藏产品,magento,product,magento2,cart,checkout,Magento,Product,Magento2,Cart,Checkout,我正在使用magestore的一步结帐模块,我想在magento结帐中隐藏一些产品。这些产品是在每次订单中自动添加的,例如,这些产品的包装材料,因此我需要在结帐和购物车中隐藏这些产品。我该如何做这一步结帐模块?它正在使用knockoutJS,所以我不太熟悉这个。 感谢您提前回复 我尝试过使用CSS隐藏,但这不是我想要做的。所以我想以编程方式隐藏这些产品 /* * * * Copyright © 2016 Magestore. All rights reserved. * See COP

我正在使用magestore的一步结帐模块,我想在magento结帐中隐藏一些产品。这些产品是在每次订单中自动添加的,例如,这些产品的包装材料,因此我需要在结帐和购物车中隐藏这些产品。我该如何做这一步结帐模块?它正在使用knockoutJS,所以我不太熟悉这个。 感谢您提前回复

我尝试过使用CSS隐藏,但这不是我想要做的。所以我想以编程方式隐藏这些产品

/*
 * *
 *  Copyright © 2016 Magestore. All rights reserved.
 *  See COPYING.txt for license details.
 *  
 */
/*browser:true*/
/*global define*/
define(
    [
        'jquery',
        'ko',
        'Magento_Checkout/js/model/totals',
        'uiComponent',
        'Magento_Checkout/js/model/step-navigator',
        'Magento_Checkout/js/model/quote',
    ],
    function ($, ko, totals, Component, stepNavigator, quote) {
        'use strict';
        return Component.extend({
            initialize: function () {
                this._super();
                var self = this;
                totals.isLoading.subscribe(function () {
                    if (totals.isLoading() == true) {
                        self.showOverlay();
                    } else {
                        self.hideOverlay();
                    }
                });
            },
            defaults: {
                template: 'Magestore_OneStepCheckout/summary/cart-items'
            },
            totals: totals.totals(),
            getItems: totals.getItems(),
            getItemsQty: function() {
                return parseFloat(this.totals.items_qty);
            },

            showOverlay: function () {
                $('#ajax-loader3').show();
                $('#control_overlay_review').show();
            },

            hideOverlay: function () {
                $('#ajax-loader3').hide();
                $('#control_overlay_review').hide();
            },


            isItemsBlockExpanded: function () {
                return quote.isVirtual() || stepNavigator.isProcessed('shipping');
            }

        });
    }
);
这是实际的cart-items.js文件,我想它包含在签出时显示产品的代码,但我不知道如何应用过滤器来隐藏具有此sku XXXXXXXXX或产品Id XXXXX的产品。 这是我为测试目的而设置的网站。

我无法通过代码隐藏产品,但我最终通过下面的JQuery代码隐藏了这些产品。我希望这也能对您有所帮助。
您也可以使用相同的代码在其他页面(如购物车和订单确认页面)上隐藏产品,只是元素之间的差异。

对于购物车:

if($( "a:contains('demo2')" )){
var element1 = $( "a:contains('demo2')" );
element1.closest('tbody').remove();
}
if($( "a:contains('demo1')" )){
    var element2 = $( "a:contains('demo1')" );
    element2.closest('tbody').remove();
}
if($( "h2:contains('demo2')" )){
var element1 = $( "h2:contains('demo2')" );
element1.closest('tr').remove();
}
if($( "h2:contains('demo1')" )){
    var element2 = $( "h2:contains('demo1')" );
    element2.closest('tr').remove();
}
if($( "font:contains('$ 0.00')" )){
    var element2 = $( "font:contains('$ 0.00')" );
    element2.closest('tr').remove();
}
用于结帐:

if($( "a:contains('demo2')" )){
var element1 = $( "a:contains('demo2')" );
element1.closest('tbody').remove();
}
if($( "a:contains('demo1')" )){
    var element2 = $( "a:contains('demo1')" );
    element2.closest('tbody').remove();
}
if($( "h2:contains('demo2')" )){
var element1 = $( "h2:contains('demo2')" );
element1.closest('tr').remove();
}
if($( "h2:contains('demo1')" )){
    var element2 = $( "h2:contains('demo1')" );
    element2.closest('tr').remove();
}
if($( "font:contains('$ 0.00')" )){
    var element2 = $( "font:contains('$ 0.00')" );
    element2.closest('tr').remove();
}
还要隐藏所有价格为0.00的产品:

if($( "a:contains('demo2')" )){
var element1 = $( "a:contains('demo2')" );
element1.closest('tbody').remove();
}
if($( "a:contains('demo1')" )){
    var element2 = $( "a:contains('demo1')" );
    element2.closest('tbody').remove();
}
if($( "h2:contains('demo2')" )){
var element1 = $( "h2:contains('demo2')" );
element1.closest('tr').remove();
}
if($( "h2:contains('demo1')" )){
    var element2 = $( "h2:contains('demo1')" );
    element2.closest('tr').remove();
}
if($( "font:contains('$ 0.00')" )){
    var element2 = $( "font:contains('$ 0.00')" );
    element2.closest('tr').remove();
}
我希望这个答案能给你一些帮助。如果是,别忘了按向上投票按钮