Post

修复博客搜索问题

修复博客搜索问题

好,你使用的是 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 文件也要包含进最终输出


🔁 完成后流程

  1. 将以上改动提交并 push 到 main 分支。
  2. GitHub Actions 会自动运行 jekyll build,并包括刚创建的 search.json
  3. 构建成功后,你可以在浏览器打开:

    1
    
    https://xiaogui2011.github.io/xiaogui2011.github.io/assets/js/data/search.json
    

    (注意路径包含 baseurl: /xiaogui2011.github.io

  4. 若能看到一段含有所有文章信息的 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.