全局实现首页文章过滤功能,使特定文章不显示在首页(开发记录)
2026-02-21
心情随笔
type
Post
status
Published
date
Feb 21, 2026
slug
notionnext-global-homepage-post-filter-by-tag-and-category
summary
希望让某些分类下的文章不再出现在首页,例如「Python基础」这一类内容。它们更偏向于系统性的学习记录与长期积累,比起展示在首页,更适合被安静地归档,在需要时再被方便的查阅,而不是成为首页时间线的一部分。但是又因为NotionNext中没有相关实现也没有可以利用的方法.如果要在主题中实现这个会非常的麻烦.所以干脆直接修改NotionNext的代码.
tags
开发
category
心情随笔
icon
password
修改原因:希望让某些分类下的文章不再出现在首页,例如「Python基础」这一类内容。它们更偏向于系统性的学习记录与长期积累,比起展示在首页,更适合被安静地归档,在需要时再被方便的查阅,而不是成为首页时间线的一部分。但是又因为NotionNext中没有相关实现也没有可以利用的方法.如果要在主题中实现这个会非常的麻烦.所以干脆直接修改NotionNext的代码.
功能:首页文章过滤(按标签/分类排除)
修改日期: 2025-02-21
修改目的: 允许在首页文章列表中排除特定标签或分类的文章,仅在首页和分页生效,不影响 RSS、站点地图、分类页面等其他功能,做最小化修改。
修改文件 1: conf/post.config.js
修改前
修改后
说明
- 添加两个配置项用于指定要排除的标签和分类
- 支持环境变量配置或直接在配置文件中修改
- 多个值使用逗号分隔
修改文件 2: pages/index.js
修改前(完整文件)
修改后(完整文件)
说明
- 添加文章过滤逻辑,排除指定标签或分类的文章
- 更新
postCount为过滤后的数量,确保分页控件显示正确
- 仅在首页数据获取时过滤文章
修改文件 3: pages/page/[page].js
修改前(完整文件)
修改后(完整文件)
说明
getStaticPaths: 使用过滤后的文章数计算总页数,确保分页路径正确生成
getStaticProps: 过滤文章并更新postCount,确保分页控件显示正确
- 与首页过滤逻辑保持一致
使用方法
在 Notion 中标记要排除的文章
方式1 - 使用标签:
- 给文章添加标签,如
Hidden
- 在配置文件或Notion中设置
POSTS_EXCLUDE_TAGS: 'Hidden'
方式2 - 使用分类:
- 在配置文件或Notion中设置不需要首页显示的文章分类
POSTS_EXCLUDE_CATEGORIES: 'Python基础'
以上配置均允许多个.
配置示例
示例1 - 排除单个标签:
示例2 - 排除多个标签:
示例3 - 排除特定分类:
示例4 - 同时排除标签和分类:
环境变量配置
在
.env.local 或 Vercel ,也可以直接在notion中中设置:影响范围
被排除的文章将不会出现在:
- ✅ 首页文章列表 (
/)
- ✅ 分页列表 (
/page/2,/page/3等)
但仍会正常出现在:
- ✅ RSS 订阅
- ✅ 站点地图 (sitemap.xml)
- ✅ 最新文章列表 (latestPosts)
- ✅ 文章总数统计(原始数据,不影响)
- ✅ 直接访问文章链接
/article/[slug]
- ✅ 分类页面
/category/[category]
- ✅ 标签页面
/tag/[tag]
- ✅ 搜索功能
注意事项
- 大小写不敏感: 标签和分类的匹配不区分大小写,
Hidden和hidden效果相同
- 空格处理: 配置中的空格会被自动去除
- 空值处理: 空字符串或只有空格的配置会被忽略
- 多标签匹配: 只要文章包含任一排除标签,就会被排除
文件位置
- 本文档位置:
NotionNext全局代码关键修改记录.md(项目根目录)
- 修改的配置文件:
conf/post.config.js
- 修改的页面文件:
pages/index.jspages/page/[page].js
Loading...
