修复博客搜索问题
修复博客搜索问题
好,你使用的是 Chirpy 主题(jekyll-theme-chirpy
),它自带对 SimpleJekyllSearch
的支持。这就是为什么你的页面中会自动引用该库,却没必要你自己写 search.html
或手动引入脚本。🎉
✅ 接下来只需完成两步,搜索功能即可彻底恢复!
1️⃣ 在 assets/js/data/
中添加 search.json
文件
路径:assets/js/data/search.json
内容如下,直接复制即可:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
---
layout: null
---
[
{% for post in site.posts %}
{
"title": "{{ post.title | escape }}",
"url": "{{ post.url | relative_url }}",
"date": "{{ post.date | date: '%Y-%m-%d' }}",
"content": {{ post.content | strip_html | strip_newlines | jsonify }}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
你只需要在那段代码外面加上:
和
这样它就不会被执行,而是作为纯文本原样展示出来 ✅。
这段代码会在构建时自动从你所有 Markdown 文章里生成 JSON,供搜索使用。
2️⃣ 确保 _config.yml
包含以下内容
你已经添加了这行:
1
2
include:
- assets/js/data/search.json
这一步非常关键,它告诉 Jekyll:本来会被忽略的 JSON 文件也要包含进最终输出。
🔁 完成后流程
- 将以上改动提交并 push 到
main
分支。 - GitHub Actions 会自动运行
jekyll build
,并包括刚创建的search.json
。 构建成功后,你可以在浏览器打开:
1
https://xiaogui2011.github.io/xiaogui2011.github.io/assets/js/data/search.json
(注意路径包含 baseurl:
/xiaogui2011.github.io
)- 若能看到一段含有所有文章信息的 JSON,就证明成功 ✅
✅ 为什么你不用手动写 HTML 或 JS?
- Chirpy 主题已经集成了搜索脚本和样式,无需手动引入。
主题会在网站加载时执行:
1 2 3 4 5
SimpleJekyllSearch({ searchInput: /* 获取页面右上角输入框 */, resultsContainer: /* 渲染结果的容器 */, json: '/assets/js/data/search.json' })
所以只要
search.json
存在,搜索功能就完全正常了。
🛠️ 后续验证与调试
- 成功访问 JSON 后,刷新网页搜索框,看控制台是否仍有
failed to get JSON
错误。 - 如果还有问题,请贴控制台报错截图或日志,我继续帮你排查。
✌️ 总结
步骤 | 说明 |
---|---|
✅ 创建 search.json | 让 Jekyll 构建出文章索引 JSON |
✅ _config.yml include: 配置 | 确保 JSON 被输出 |
✅ push → 构建 → 验证 | 成功后搜索功能恢复 |
✉️ 有别的问题随时欢迎继续聊,我随时帮你调试!
This post is licensed under CC BY 4.0 by the author.