Skip to content

Commit 05f1a2b

Browse files
committed
Redirect to first page after changing product_list_limit to value higher than current.
1 parent d7cdd7b commit 05f1a2b

File tree

1 file changed

+35
-10
lines changed
  • app/code/Magento/Catalog/view/frontend/web/js/product/list

1 file changed

+35
-10
lines changed

app/code/Magento/Catalog/view/frontend/web/js/product/list/toolbar.js

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,25 +80,49 @@ define([
8080
);
8181
},
8282

83-
/**
84-
* @param {String} paramName
85-
* @param {*} paramValue
86-
* @param {*} defaultValue
87-
*/
88-
changeUrl: function (paramName, paramValue, defaultValue) {
83+
getUrlParams: function() {
8984
var decode = window.decodeURIComponent,
9085
urlPaths = this.options.url.split('?'),
91-
baseUrl = urlPaths[0],
9286
urlParams = urlPaths[1] ? urlPaths[1].split('&') : [],
93-
paramData = {},
94-
parameters, i, form, params, key, input, formKey;
87+
params = {}, parameters, i;
9588

9689
for (i = 0; i < urlParams.length; i++) {
9790
parameters = urlParams[i].split('=');
98-
paramData[decode(parameters[0])] = parameters[1] !== undefined ?
91+
params[decode(parameters[0])] = parameters[1] !== undefined ?
9992
decode(parameters[1].replace(/\+/g, '%20')) :
10093
'';
10194
}
95+
96+
return params;
97+
},
98+
99+
getCurrentLimit: function()
100+
{
101+
var currentLimit = this.getUrlParams()[this.options.limit];
102+
103+
if (currentLimit === undefined) {
104+
currentLimit = this.options.limitDefault;
105+
}
106+
107+
return currentLimit;
108+
},
109+
110+
111+
/**
112+
* @param {String} paramName
113+
* @param {*} paramValue
114+
* @param {*} defaultValue
115+
*/
116+
changeUrl: function (paramName, paramValue, defaultValue) {
117+
var urlPaths = this.options.url.split('?'),
118+
baseUrl = urlPaths[0],
119+
paramData = this.getUrlParams(),
120+
form, params, key, input, formKey;
121+
122+
if (paramName === this.options.limit && paramValue > this.getCurrentLimit()) {
123+
delete paramData['p'];
124+
}
125+
102126
paramData[paramName] = paramValue;
103127

104128
if (this.options.post) {
@@ -130,6 +154,7 @@ define([
130154
if (paramValue == defaultValue) { //eslint-disable-line eqeqeq
131155
delete paramData[paramName];
132156
}
157+
133158
paramData = $.param(paramData);
134159
location.href = baseUrl + (paramData.length ? '?' + paramData : '');
135160
}

0 commit comments

Comments
 (0)