You can do it by following steps:
*** example code for nopCommerce 3.90 ***### STEP 1 ###Create custom model factory for product, it named
CustomProductModelFactory.
public class CustomProductModelFactory : ProductModelFactory
{
private readonly IPermissionService _permissionService;
public CustomProductModelFactory(
ISpecificationAttributeService specificationAttributeService, ICategoryService categoryService, IManufacturerService manufacturerService,
IProductService productService, IVendorService vendorService, IProductTemplateService productTemplateService,
IProductAttributeService productAttributeService, IWorkContext workContext, IStoreContext storeContext,
ITaxService taxService, ICurrencyService currencyService, IPictureService pictureService,
ILocalizationService localizationService, IMeasureService measureService, IPriceCalculationService priceCalculationService,
IPriceFormatter priceFormatter, IWebHelper webHelper, IDateTimeHelper dateTimeHelper,
IProductTagService productTagService, IAclService aclService, IStoreMappingService storeMappingService,
IPermissionService permissionService, IDownloadService downloadService, IProductAttributeParser productAttributeParser,
IDateRangeService dateRangeService, MediaSettings mediaSettings, CatalogSettings catalogSettings,
VendorSettings vendorSettings, CustomerSettings customerSettings, CaptchaSettings captchaSettings, SeoSettings seoSettings, ICacheManager cacheManager)
: base(
specificationAttributeService, categoryService, manufacturerService,
productService, vendorService, productTemplateService,
productAttributeService, workContext, storeContext,
taxService, currencyService, pictureService,
localizationService, measureService, priceCalculationService,
priceFormatter, webHelper, dateTimeHelper,
productTagService, aclService, storeMappingService,
permissionService, downloadService, productAttributeParser,
dateRangeService, mediaSettings, catalogSettings,
vendorSettings, customerSettings, captchaSettings, seoSettings, cacheManager)
{
_permissionService = permissionService;
}
protected override ProductOverviewModel.ProductPriceModel PrepareProductOverviewPriceModel(Product product, bool forceRedirectionAfterAddingToCart = false)
{
var priceModel = base.PrepareProductOverviewPriceModel(product, forceRedirectionAfterAddingToCart);
if (!_permissionService.Authorize(StandardPermissionProvider.DisplayPrices))
{
priceModel.Price = "Prices only available after Login ... please Login";
}
return priceModel;
}
protected override ProductDetailsModel.ProductPriceModel PrepareProductPriceModel(Product product)
{
var priceModel = base.PrepareProductPriceModel(product);
if (!_permissionService.Authorize(StandardPermissionProvider.DisplayPrices))
{
priceModel.Price = "Prices only available after Login ... please Login";
}
return priceModel;
}
}
### STEP 2 ###Register the created custom product model factory
public partial class DependencyRegistrar : IDependencyRegistrar
{
public void Register(ContainerBuilder builder, ITypeFinder typeFinder, NopConfig config)
{
builder.RegisterType<CustomProductModelFactory>().As<IProductModelFactory>()
.WithParameter(ResolvedParameter.ForNamed<ICacheManager>("nop_cache_static")).InstancePerLifetimeScope();
}
public int Order { get { return 100; } }
}
Hope that help :)