NopCommerce - 有条件地隐藏支付选项
NopCommerce - Conditionally hide payment options
有没有办法根据某些用户标准有条件地隐藏某些付款方式?
例如:
if (!_workContext.CurrentCustomer.IsRegistered()){
// Hide Credit Card payment method
}
以上只是一个示例,但我已经创建了一个自定义支付方式插件,并且基于一些不同的事情我需要从前端show/hide 表示支付方式。想法?
是的,有多种方法可以做到这一点。付款方式代码位于 Nop.Web > View > Checkout > opcPaymentMethods.cshtml
(单页结帐)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 == "admin@yourstore.com")
{
if (_paymentMethodSystemName == "Payments.CheckMoneyOrder")
{
continue;
}
}
var paymentMethodName = paymentMethod.Name;
}
...
.....
现在,不会为管理员用户加载 CheckMoneyOrder。
有没有办法根据某些用户标准有条件地隐藏某些付款方式?
例如:
if (!_workContext.CurrentCustomer.IsRegistered()){
// Hide Credit Card payment method
}
以上只是一个示例,但我已经创建了一个自定义支付方式插件,并且基于一些不同的事情我需要从前端show/hide 表示支付方式。想法?
是的,有多种方法可以做到这一点。付款方式代码位于 Nop.Web > View > Checkout > opcPaymentMethods.cshtml
(单页结帐)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 == "admin@yourstore.com")
{
if (_paymentMethodSystemName == "Payments.CheckMoneyOrder")
{
continue;
}
}
var paymentMethodName = paymentMethod.Name;
}
...
.....
现在,不会为管理员用户加载 CheckMoneyOrder。