Фильтрация содержимого в Sanity Studio

Мне интересно, можно ли фильтровать контент в Sanity Studio в соответствии с заданными критериями. Например, вернуть все опубликованные сообщения или все сообщения в определенной категории и т. Д.

Вот короткое видео, демонстрирующее, что я имею в виду: https://www.loom.com/share/5af3a9dd79f08458de < / а>

Это возможно? Если да, есть ли документация о том, как это сделать?

Спасибо.


person Moshe    schedule 04.03.2021    source источник


Ответы (1)


Самый простой способ, который я нашел для создания всевозможных фильтров, - это использовать Конструктор структур. С его помощью вы добавляете столько разделов, сколько хотите, называете их и даете им свой собственный фильтр в виде 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