Close

General Discussion

Support
10 years ago
#7753 Quote
Avatar
  • Moderator
  • 1044
Topic for general discussion regarding Nop Previous/Next Product plugin
zootie
9 years ago
#9466 Quote
Avatar
  • 2
Support to keep in context products in multiple categories?

Not sure if it is a bug or if it qualifies for general discussion or feature suggestion.

When a product is in multiple categories, its breadcrumb defaults to the first one regardless of how you arrive to the product page, and the Previous/Next plugin iterates through this same first category (rather than through the subset you were viewing).

It's discussed a bit over on http://www.nopcommerce.com/boards/t/8174/incorrect-breadcrumb-for-products-in-multiple-categories.aspx. This discussion is a bit dated, unsure if there is newer/better info (or if Previous/Next has improvements on this).

This is counterintuitive, specially for Previous/Next plugin. If you arrive to a product through a category (like "On Sale", or through a manufacturer), you'd expect to be able to iterate only products in this category (not to land back in another list of products).

Implementation might not be trivial. Using a session variable (as suggested in the nopC board) can be fragile (ie, if you are visiting multiple pages on the same session in multiple windows/tabs). I'm guessing it would require adding parameters to the links when browsing the site using cats or manufacturers (so the product page can build the correct breadcrumb and Previous/Next can iterate the correct subset).
zootie
9 years ago
#9467 Quote
Avatar
  • 2
More info on breadcrumbs (assuming that Previous/Next would be affected by this logic)

"Category Mappings help!!! Bug?" and "Products belonging to multiple categories, which category to display when view product", which leads to "Breadcrumb issue when product is in more than one category" (closed) workitem.

I would think that parameters shouldn't affect SEO. You see plenty of stores that add context information to their products URLs.

For example, if you look for a WD4000FYYZ hard disk on NewEgg (or any other item on a sale page), you get a URL with plenty of parameters (including a source parameter). But if you search in Google for NewEgg and WD4000FYYZ, you get a clean URL with only 1 parameter (to the product). Presumably the link rel="canonical" header takes care of this.
Deni
9 years ago
#9480 Quote
Avatar
  • Moderator
  • 389
Hi, 

We are really thinking now of the best implementation of this functionality and we will soon come up with the solution. Thanks for your suggestions!
Best Regards,
Mladen Staykov
Nop-Templates.com
mbreton
8 years ago
#11836 Quote
Avatar
  • 2
When I try to see the product page, I have this: 

Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'.
The details for the log entry.Full message:  System.Web.HttpException (0x80004005): Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'. ---> System.Web.HttpException (0x80004005): Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'. ---> System.NullReferenceException: Object reference not set to an instance of an object. at SevenSpikes.Nop.Plugins.PrevNextProduct.Controllers.PrevNextProductController.tOUobdmHB(Product ) at SevenSpikes.Nop.Plugins.PrevNextProduct.Controllers.PrevNextProductController.PrevNextWidget() at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) at System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.<>c__DisplayClass4.<Wrap>b__3() at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.Wrap[TResult](Func`1 func) at System.Web.HttpServerUtil
hristian.dimov
8 years ago
#11839 Quote
Avatar
  • Moderator
  • 386
mbreton wrote:
When I try to see the product page, I have this: 


Hi,

Could you please submit a ticket in our ticketing system specifying your product version.

You can find out your product version by going to Administration -> System -> System Information, click the Show button next to Loaded assemblies and search for SevenSpikes.Nop.Plugins.PrevNextProduct, Version=3.*.***.*****, Culture=neutral, PublicKeyToken=null

You can try also to update the plugin to the latest version following this article: https://www.nop-templates.com/how-to-update-a-nopcommerce-plugin

Hope this helps!
Regards,
Hristian Dimov
Nop-Templates.com
bsohn
2 years ago
#21866 Quote
Avatar
  • 4
Deni wrote:
Hi, 

We are really thinking now of the best implementation of this functionality and we will soon come up with the solution. Thanks for your suggestions!


Any solve to this issue?? I have just got this plugin and the issue still exists however MY issue has to do with the fact that it works partially I.e. I have Multiple categories for some products which are in two different categories so when it rotates to a product with a change in the breadcrumb based category it actually CHANGES the Next/Pervious section causing it to get locked to the new category and never scrolling back through the original location.

I know the NOP breadcrumb category preference for a product comes with how things are set in the display order of the categories so it assumes the Parent category is the one with a lower display number. 

That is HOW I can get things to work correctly BUT that messes up other things..
bsohn
2 years ago
#21867 Quote
Avatar
  • 4
OK so upon further investigation the issue seems to be somewhat within NopCommerce itself in the way it deals with breadcrumbs.. However still curious if there is any sort of fix for Version 4.5.. As it really messes up the functionality of the Prev/Next..

What I have determined is that NopCommerce if there are multiple categories on the product it takes and uses the FIRST alphabetically that is set (doesn't even do it by display priority) and it uses that first one for ALL breadcrumbs regardless of the refereeing category. 

There is another company out there that has a plug-in that will allow setting of a Default Base Category overriding that First Alphabetically which is an OK work around as that can be set for the category with the better product BASE, but there has to be something better which would fix this long term (as it appears) NopCommerce issue with being able to change that to the referreing breadcrumb at least when using the forward Next so the system stays within category.
todor.atanasov
2 years ago
#21869 Quote
Avatar
  • Moderator
  • 249
Greetings,

We are taking the first category for the product through the nopCommerce GetProductCategoriesByProductIdAsync method in the Category Service.

NopCommerce first orders the categories returned by this method by display order and then by id of the category.

You can either change the display orders of your categories or modify the nopCommerce code.
Best regards,
Todor Atanasov
Nop-templates.com