2017-12-28 19 views
1

一部のユーザー基準に基づいて特定の支払い方法を条件付きで非表示にする方法はありますか?例えばNopCommerce - 支払いオプションを条件付きで非表示にする

if (!_workContext.CurrentCustomer.IsRegistered()){ 
    // Hide Credit Card payment method 
} 

上記は一例ですが、私は、カスタム支払い方法プラグインを作成し、私は/非表示を表示する必要があるいくつかの異なるものは、フロントエンドからの支払い方法とに基づいています。思考?

答えて

1

はい、さまざまな方法があります。支払い方法コードがNop.Web > View > Checkout > opcPaymentMethods.cshtml(1ページチェックアウト)に位置nopCommerce 3.90

<ul class="method-list" id="payment-method-block"> 
    @for (int i = 0; i < Model.PaymentMethods.Count; i++) 
    { 
     var paymentMethod = Model.PaymentMethods[i]; 
     var paymentMethodName = paymentMethod.Name; 
     if (!String.IsNullOrEmpty(paymentMethod.Fee)) 
     { 
      paymentMethodName = T("Checkout.SelectPaymentMethod.MethodAndFee", paymentMethodName, paymentMethod.Fee).Text; 
      ... 
      .... 
     } 
    } 
</ul> 

私はIsRegisteredプロパティを見つけることができないので、私が条件ならば、ここでの電子メールアドレスを使用して、プラグインシステム名とそれをチェックしていますその支払い方法をスキップします。

@using Nop.Core.Infrastructure; 
@using Nop.Core; 

<ul class="method-list" id="payment-method-block"> 
    @for (int i = 0; i < Model.PaymentMethods.Count; i++) 
    {      
     var customerEmail = EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer.Email; 

     var paymentMethod = Model.PaymentMethods[i]; 

     string _paymentMethodSystemName = paymentMethod.PaymentMethodSystemName; 

     if(customerEmail == "[email protected]") 
     { 
     if (_paymentMethodSystemName == "Payments.CheckMoneyOrder") 
     { 
      continue; 
     } 
     } 

     var paymentMethodName = paymentMethod.Name; 
    } 
    ... 
    ..... 

ここで、CheckMoneyOrderは管理者用に読み込まれません。

+0

ありがとう、これは私が必要としていたものです。答えとしてマーク。 –

+0

うれしい私は助けることができました! –