Самый простой способ, который я нашел для создания всевозможных фильтров, - это использовать Конструктор структур. С его помощью вы добавляете столько разделов, сколько хотите, называете их и даете им свой собственный фильтр в виде groq и params.
Документация Se: https://www.sanity.io/docs/structure-builder-introduction
В качестве примера я добавил S.listItem
в файл deskStructure.js, который получает все статьи, в которых отсутствует поле модуля.
export default async () =>
S.list()
.title('Content')
.items([
// ...
S.listItem() // <-- New root item for my filters
.title('My article filters')
.icon(FaRegCopyright)
.child(
S.list() // <-- List of filters
.title('My article filters')
.items([
S.listItem() // <-- Item with filter description
.title('Articles without module')
.icon(FaCogs)
.child(
S.documentList() // <-- Filtered list of articles
.title('Articles without module')
.menuItems(S.documentTypeList(menuType).getMenuItems())
.filter('_type == $type && !defined(module)')
.params({ type: 'article' })
),
S.listItem(), // more filters
S.listItem(), // more filters
])
),
// ...
Он не создает разные фильтры для одного списка элементов. Это скорее создание разных списков, которые все будут отфильтрованы по вашему желанию. И вы можете дать ему любой значок и текст, который захотите. Картофель / potàto, '-)
Я не думаю, что в списке сортировки вы можете сделать что-то, кроме добавления дополнительной сортировки. И это не работает, когда список элементов становится больше, поэтому я бы не стал беспокоиться. Но он находится в разделе «Порядок сортировки»: https://www.sanity.io/docs/sort-orders
person
cfm
schedule
04.03.2021