我应该如何从catalogController调用prepareProductdetailpage方法到我的pluging控制器

时间:2014-04-28 05:01:44

标签: nopcommerce

我想在客户访问产品时增加产品的计数器。我没有插件就完成了这个

首先我在productservice中制作了插入方法:

public virtual void InsertMostViewProduct(int productid)
        {
            var query = from u in _mostviewRepository.Table
                        where u.ProductId == productid
                        select u;

       if (query.Count()==0)
        {
            //insert
            var Insertproduct = new MostViewProduct();
            Insertproduct.ProductId = productid;
            Insertproduct.ProductCount = 1;
            _mostviewRepository.Insert(Insertproduct);

            //event notification
            _eventPublisher.EntityInserted(Insertproduct);
        }
        else
        {
          //Update
            var product = query.FirstOrDefault();
            product.ProductCount = product.ProductCount + 1;
            _mostviewRepository.Update(product);
          //  _eventPublisher.EntityUpdated(Updateproduct);
        }

    }

并在PrepareProductDetailsPageModel中调用此方法:

 #region MostViewProduct

        _productService.InsertMostViewProduct(product.Id);

 #endregion

如何将prepareProductdetailpage方法从catalogController调用到我的插件控制器?

1 个答案:

答案 0 :(得分:1)

如果查看代码,PrepareProductDetailsPageModel不适合您的代码,因为它也会为相关产品列表调用。此外,我建议您尽可能不修改nopCommerce代码。

我的建议是在您的插件中执行此操作。覆盖插件中IRecentlyViewedProductsService的实现,每次用户访问产品页面时都会调用此服务。

  1. 在扩展RecentlyViewedProductsService的插件中添加一个类。覆盖添加自己代码的AddProductToRecentlyViewedList方法。请务必从基类调用实现以保持旧功能。
  2. 在插件的依赖注册商中注册新服务(more)。
  3. 如果您需要更多灵活性,请考虑创建自定义事件和处理程序(more),在这种情况下,您需要修改原始代码以正确连接它。