首页 > 解决方案 > 在 Sanity Studio 中过滤内容

问题描述

我想知道是否可以根据设定的标准过滤 Sanity Studio 中的内容。例如,返回所有已发布的帖子或特定类别中的所有帖子等。

这是一个简短的视频,展示了我的意思: https ://www.loom.com/share/5af3a9dd79f045458de00e8f5365cf00

这可能吗?如果是这样,是否有任何有关如何操作的文档?

谢谢。

标签: sanity

解决方案


我发现制作各种过滤器的最简单方法是使用结构生成器。使用它,您可以添加任意数量的部分,命名它们,并以 groq 和 params 的形式为其提供您自己的过滤器。

Se 文档:https ://www.sanity.io/docs/structure-builder-introduction

作为一个例子,我S.listItemdeskStructure.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


推荐阅读