mFilter2 как убрать параметры ysclid (и другие) из ссылок и как заставить работать постраничную навигацию и кнопку "Показать еще"
Вчера пообещал немного написать про два вопроса, возникающие при работе mFilter:
1. Лишние параметры типа ysclid в постраничной навигации.
2. Как заставить совместно работать и постраничную навигацию и кнопку «Показать еще» при использовании mFilter2 в режиме ajaxMode = button.
Все, что я пишу ниже, не уверен, что относится к последней версии mSearch2. На моем сайте все механизмы работают, есть custom код в компонентах и обновляться я не хочу)))
Часто на нашем сайте в постраничной навигации появляются ссылки вида ?page=2&ysclid=длинная_строка
Совместно с ysclid лезут и utm метки и что-нибудь еще бывает.
Сначала не мог понять, что за история, потом чуть разобрался.
Теория: webmaster.yandex.ru/blog/novyy-parametr-dlya-bolee-tochnogo-raspoznavaniya-poiskovykh-fraz-v-metrike
Итог: браузеры стали ограничивать использование сторонних cookie, поисковики взамен стали добавлять параметры в url вашего сайта при переходе на него.
Так где ж косяк?
Дело в том, что эти параметры потом попадают в куки, и тут mSearch не совсем корректно работает на мой взгляд.
Смотрим файл /assets/components/msearch2/action.php, в районе 120-130 строки есть такая запись:
В общем я сделал так:
В общем если мы вызываем mFilter2 с пагинатором pdoPage и хотим, чтобы была и постраничная навигация и кнопка «Показать еще», то не все сразу заработает.
Итак, скопируем файл /assests/components/msearch/js/web/default.js куда-нибудь (если вы это еще не делали ранее), не забудем указать этот новый файл в настройках компонента и поехали:
1. Добавим кнопку «Показать еще» в шаблона сайта, ну например, перед блоком с постраничной навигацией #mse2_pagination. У этой кнопки должен быть класс ".btn_more" (или укажите другой в js скрипте, в mSearch2.options.more).
2. В функции handlePagination (прим. 170 строка) в начале внутри блока switch… case 'button' есть строки
3. Далее по всему файлу ищем код, который при режиме ajaxMode = button удаляет параметр page. Он встречается в нескольких местах, я его закомментировал:
1. Лишние параметры типа ysclid в постраничной навигации.
2. Как заставить совместно работать и постраничную навигацию и кнопку «Показать еще» при использовании mFilter2 в режиме ajaxMode = button.
Все, что я пишу ниже, не уверен, что относится к последней версии mSearch2. На моем сайте все механизмы работают, есть custom код в компонентах и обновляться я не хочу)))
Лишние параметры в постраничной навигации
Часто на нашем сайте в постраничной навигации появляются ссылки вида ?page=2&ysclid=длинная_строка
Совместно с ysclid лезут и utm метки и что-нибудь еще бывает.
Сначала не мог понять, что за история, потом чуть разобрался.
Теория: webmaster.yandex.ru/blog/novyy-parametr-dlya-bolee-tochnogo-raspoznavaniya-poiskovykh-fraz-v-metrike
Итог: браузеры стали ограничивать использование сторонних cookie, поисковики взамен стали добавлять параметры в url вашего сайта при переходе на него.
Так где ж косяк?
Дело в том, что эти параметры потом попадают в куки, и тут mSearch не совсем корректно работает на мой взгляд.
Смотрим файл /assets/components/msearch2/action.php, в районе 120-130 строки есть такая запись:
$_GET = $_REQUEST;
Весь $_REQUEST копируется в $_GET. Вот только $_REQUEST включает в себя и $_COOKIE… В общем я сделал так:
$_GET = array_diff_assoc($_REQUEST, $_COOKIE);
Как заставить совместно работать постраничную навигацию и кнопку «Показать еще» в связке сниппетов pdoPage + mFilter2 в режиме ajaxMode = button
В общем если мы вызываем mFilter2 с пагинатором pdoPage и хотим, чтобы была и постраничная навигация и кнопка «Показать еще», то не все сразу заработает.
Итак, скопируем файл /assests/components/msearch/js/web/default.js куда-нибудь (если вы это еще не делали ранее), не забудем указать этот новый файл в настройках компонента и поехали:
1. Добавим кнопку «Показать еще» в шаблона сайта, ну например, перед блоком с постраничной навигацией #mse2_pagination. У этой кнопки должен быть класс ".btn_more" (или укажите другой в js скрипте, в mSearch2.options.more).
2. В функции handlePagination (прим. 170 строка) в начале внутри блока switch… case 'button' есть строки
// this.pagination.hide();
// Add more button
// this.results.after(this.options['more_tpl']);
комментируем их, не будем скрывать блок пагинации и добавлять кнопку (хотя наверное можно кнопку и скриптом добавлять… но я руками добавил).3. Далее по всему файлу ищем код, который при режиме ajaxMode = button удаляет параметр page. Он встречается в нескольких местах, я его закомментировал:
1. Внутри handlePagination / switch / case 'button'
//if (mse2Config['page'] > 1) {
// mse2Config['page'] = '';
// mSearch2.Hash.remove('page');
// mSearch2.load();
//}
2. Внутри handleSort
if (mse2Config['page'] > 1 && (mse2Config['mode'] == 'scroll' || mse2Config['mode'] == 'button')) {
//mse2Config['page'] = '';
//delete(params['page']);
}
3. Внутри handleTpl
if (mse2Config['page'] > 1 && (mse2Config['mode'] == 'scroll' || mse2Config['mode'] == 'button')) {
//mse2Config['page'] = '';
//delete(params['page']);
}
Внутри handleLimit
if (mse2Config['page'] > 1 && (mse2Config['mode'] == 'scroll' || mse2Config['mode'] == 'button')) {
//mse2Config['page'] = '';
//delete(params['page']);
}
В общем как-то так. Решение предоставляется «как есть», если что-то сломается — я не виноват :) Комментарии: 1
Спасибо, интересная заметка.
Но при переходе он очищается из url.
В общем я сделал так:Единственное, в url в пагинации остается параметр limit=
$_GET = array_diff_assoc($_REQUEST, $_COOKIE);
*?page=3&limit=36
Но при переходе он очищается из url.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.