yup, this is for the dev team. Do they read the forum or should I open a new topic in the dev part of the forum?
BTW I tested with the latest VM version with the demo data and the issue is exists.
Steps to reproduct with the core
- open the shop, it shows 86 products ( https://snipboard.io/1qyAbD.jpg )
- filter the products with the manufacturer filter for 'producer'. Result: 1-5 of 5, so there are 5 products there, url: /index.php/shop/manufacturer/producer/dirAsc?keyword=
- go back to the full list
- open the 4th page, the url is: /index.php/shop?start=72
- filter for the producer manufacturer again. It shows there are 5 products like in the second step but the url is /index.php/shop/manufacturer/producer/dirAsc/results,73-96?keyword=
- it seems VM wants to show the 5 products starting from 73
In VM 3.8.9 there is a getManufacturerOrderByList method in the product model and it has a $fieldLink parameter which is $fieldLink = vmURI::getCurrentUrlBy('request', false, true, array('orderby','dir'));
I think the last array should contain 'limitstart' (and maybe limit as well) because no matter if I start the filtering from the nth page, the result should show the first page.
In the previous versions there is a if($key=='dir' or $key=='orderby') continue; line in getOrderByList
I added limitstart and limit there and it has huge imact to the site performance on big sites.
The most extreme scenario:
The category has 6000 products with 25 product/page. It has subcategories but it shows the products from the subcategories as well. There are ~1000 manufacturers for that most of them contain 1 or 2 products from the category.
Without manufacturer filtering it has 6000/25=240 pages for the pagination. Let's assume google indexes this 240 pages and the 1000 filter page as well, its 240 + 1000 = 1240
But if the manufacturer filter urls contains limitstart parameter it's a different url from every pagination page so it's 240*1000=240 000 pages to index.
We constantly had server crashes, huge load no matter what kind of cache did we use (because there is no cache for the nonexisting pages). I removed the $limitstart from the mf filter url and we had zero crashes since then.
Also the filter should be a <select> instead of a html list because if you have a lot of categories it way below the bottom of the browser.