Перейти к содержимому
Русский язык для Invision Community 5

Как в pagination передать все параметры из URL?

Здравствуйте!

Мне нужно, чтобы в пагинации появились мои параметры URL. Например, юзер на такой странице:

https://domain.ru/companies/? official=1

Тогда в пагинации нужно, чтобы было так:

 https://domain.ru/companies/page/2/? official=1
 https://domain.ru/companies/page/3/?  official=1
 https://domain.ru/companies/page/4 /? official=1

Добавил в начало шаблона core->global->pagination вот такой код:

{{foreach \IPS\Request::i() as $key => $value}}
{{$baseUrl->queryString += [$key=>$value];}}
{{endforeach}}

Потом распечатал переменную $baseURL и вижу, что параметры в queryString появились, но в пагинации пусто.

Подскажите, почему не работает?

Рекомендованные сообщения

Скорее всего в коде где генерируется ссылка пагинации там нужно добавлять свои параметры.

  • Автор

Вот я и ищу это место 🙂

Используйте метод setQueryString()

  • Автор

Делюсь готовым решением своей задачи.

Чтобы добавить все параметры из текущего URL в пагинацию, нужно в начале шаблона:

core->global->pagination

Добавить такой код:

{{foreach \IPS\Request::i()->url()->queryString as $key => $value}}
{{if $value != ''}}
{{$baseUrl = $baseUrl->setQueryString( $key, $value );}}
{{endif}}
{{endforeach}}

Сохранить шаблон и готово!

Функция setQueryString может принимать array в качестве аргумента

{{$baseUrl->setQueryString( array_filter( \IPS\Request::i()->url()->queryString ) )}}

Только не борщите с этим, а то как минимум можете наплодить дубли в пс.

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.