Using query strings to filter topic views

:bookmark: Это руководство объясняет, как использовать строки запроса для получения пользовательских отфильтрованных списков тем на любом сайте Discourse. Строки запроса могут использоваться всеми пользователями для просмотра конкретных списков тем, создания пользовательских ссылок на уникальные списки тем и поиска тем, соответствующих определенным критериям.

:person_raising_hand: Требуемый уровень пользователя: Все пользователи

Строки запроса — это текст, который можно добавить в конец большинства URL-адресов Discourse для получения пользовательского отфильтрованного представления тем. Они могут быть полезны для просмотра конкретных списков тем, создания пользовательских ссылок на уникальные списки тем и поиска тем, соответствующих определенным критериям.

Понимание строк запроса

Строка запроса добавляется в конец URL-адреса, начиная с вопросительного знака (?), за которым следуют параметры и их значения. Например:

https://meta.discourse.org/?status=open

В этом URL-адресе ?status=open — это строка запроса.

Список тем, который вы видите при использовании строк запроса, все равно будет ограничен темами, доступными для вашей учетной записи пользователя. Никакие настройки не нужно включать для использования строк запроса.

Доступные параметры строки запроса

Вот параметры строки запроса, которые можно использовать на всех сайтах Discourse:

Статус

Используйте ?status=_, чтобы отобразить темы с определенным статусом:

  • open: Только открытые темы
  • closed: Только закрытые темы
  • archived: Только архивные темы
  • listed: Только опубликованные (видимые) темы
  • unlisted: Только непубликуемые темы
  • deleted: Только удаленные темы
  • public: Только темы в публичных категориях (без ограничений на чтение)

Поиск

Используйте ?search=_, чтобы создать полную страницу результатов поиска. Замените _ на ваши поисковые запросы.

Состояние

Используйте ?state=_, чтобы отобразить темы с определенным состоянием:

  • muted: Показать темы, которые вы отключили
  • normal: Показать темы, которые вы установили в нормальное состояние
  • tracking: Показать темы, за которыми вы следите
  • watching: Показать темы, которые вы отслеживаете
  • watching_first_post: Показать темы в категориях или с тегами, за первыми сообщениями которых вы следите

Сортировка по возрастанию

Используйте ?ascending=true, чтобы показать темы по дате в порядке возрастания. По умолчанию используется порядок убывания.

Порядок

Используйте ?order=_, чтобы отобразить темы в порядке убывания по различным критериям:

  • likes: По количеству лайков
  • op_likes: По количеству лайков на исходном сообщении
  • views: По количеству просмотров
  • posts: По количеству сообщений (ответов)
  • activity: По дате последнего действия (включает дату bumped_at)
  • posters: По количеству участников
  • category: По названию категории (от Z до A)
  • created: По дате создания темы (сначала новые темы)

Фильтры по количеству сообщений

  • ?max_posts=_: Возвращает темы с количеством сообщений _ или меньше
  • ?min_posts=_: Возвращает темы с количеством сообщений _ или больше

Фильтры по возрасту

  • ?before=_: Возвращает темы, созданные более _ дней назад
  • ?bumped_before=_: Возвращает темы, которые были обновлены более _ дней назад

ID тем

Используйте ?topic_ids=_, чтобы отобразить список тем с определенными ID. Принимает строку с разделителями-запятыми ID тем.

Категория

Используйте ?category=_, чтобы отобразить список тем для определенных категорий. Принимает строку с разделителями-запятыми числовых ID категорий.

Используйте ?no_subcategories=true, чтобы исключить темы из подкатегорий при фильтрации по категории.

Теги

Используйте ?tags=_, чтобы отфильтровать темы по тегам. Например, https://meta.discourse.org/?tags=how-to покажет все темы с тегом how-to.

Используйте ?match_all_tags=true в сочетании с ?tags=_, чтобы требовать, чтобы темы имели все указанные теги (а не любой из них).

Используйте ?no_tags=true, чтобы показать только темы без тегов.

Используйте ?exclude_tag=_, чтобы исключить темы с определенным тегом.

Фильтр «Понравившиеся»

Используйте ?f=liked, чтобы показать только темы, в которых текущий пользователь лайкнул сообщение.

Параметры, специфичные для плагинов

Некоторые плагины добавляют дополнительные параметры строки запроса:

Плагин Solved

Если у вас установлен плагин Solved:

  • ?solved=yes: Показать решенные темы
  • ?solved=no: Показать нерешенные темы

Плагин Assign

Если у вас установлен плагин Assign:

  • ?assigned=username: Просмотр всех назначенных тем для конкретного пользователя
  • ?assigned=*: Просмотр всех назначенных тем для всех пользователей
  • ?assigned=me: Просмотр всех тем, назначенных текущему пользователю
  • ?assigned=nobody: Просмотр всех неназначенных тем

Комбинирование строк запроса

Вы можете комбинировать несколько строк запроса с помощью символа амперсанда (&). При использовании нескольких строк запроса символ ? нужен только для первого параметра. Например:

https://meta.discourse.org/?max_posts=1&status=closed

Этот URL-адрес покажет закрытые темы с одним сообщением.

Использование страницы расширенного поиска

Вы также можете использовать страницу расширенного поиска для создания этих URL-адресов с помощью графического интерфейса, а затем скопировать полученный URL-адрес. Обратите внимание, что некоторые фильтры поиска могут не работать как параметры строки запроса вне контекста поиска.

Дополнительные ресурсы

18 лайков

Can’t you use the advanced search page to build these urls with the gui and then just copy the url?

1 лайк

It seems they are the same parameters (we just need to replace : from the search filter to = in the query string), but some search filter doesn’t work when used as a query string parameter outside search.

So I believe the full list is in this documentation. I’d be curious to see in which Discourse file they are referenced to be sure, though.

Edit : there is now a /filter route with way more filter criteria:

3 лайка

If you have the Solved plugin, you can also use:

?solved=yes
?solved=no

3 лайка

I think there are some for Assign too:

I’ll add them in. :+1:

3 лайка

At a guess imagine you could also use this for Tags?

Awesome how to

2 лайка

Yes, you can append ?tags=_ to Discourse URLs use query strings to filter for tags.

For example, https://meta.discourse.org/?tags=how-to would direct you to all of the how-to tags on Meta.

2 лайка

Is is possible to have a negative (exclude) filter using query string ? Currently with the advanced search it is done by prefix with a -

-tags: smth but this is not possible with query string.

It is definitely possible by using the new /filter route.

For example https://meta.discourse.org/filter?q=-tags%3Aofficial%20%20category%3Aplugin

3 лайка

Tks ! How about search with multiple status (OR) ? I tried different way of searching but it seems that’s not supported at all. For example I have some topics that are either open, closed or archived, I just want to filter out the archived, aka search for open OR closed. So far I tried

  • Advanced search: status:open,closed
  • Advanced search: status:open status:closed
  • Query string: ?status=open,closed

None of them works.