经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Ruby » 查看文章
为Jekyll+GitHub Pages添加全文搜索功能
来源:cnblogs  作者:吴烜  时间:2019/4/10 8:58:03  对本文有异议

动态演示如下:
[上传失败, 请自行搜索原文]

源码库: program-in-chinese/team_website

找到此JS工具: christian-fei/Simple-Jekyll-Search, 按安装说明先完成了对题目/类别/日期的搜索, 本地运行不错. 再接再厉添加了对描述和全文(post.content)的搜索, 详见全文索引.json

发现生成的json文件中, 特殊字符如引号使得json语法出错:

发现前人对同样问题的解决方法"full-text search" donot work! · Issue #63 · christian-fei/Simple-Jekyll-Search, 另参考christian-fei/Simple-Jekyll-Search, 在_plugins下添加脚本特殊字符过滤.rb:

  1. module Jekyll
  2. module C字符过滤器
  3. def remove_chars_cn(输入)
  4. 输入.gsub! '\\','\'
  5. 输入.gsub! /\t/, ' '
  6. 输入.gsub! '@',''
  7. 输入.gsub! '$',''
  8. 输入.gsub! '%',''
  9. 输入.gsub! '&',''
  10. 输入.gsub! '"',''
  11. 输入.gsub! '{',''
  12. 输入.gsub! '}',''
  13. 输入
  14. end
  15. end
  16. end
  17. Liquid::Template.register_filter(Jekyll::C字符过滤器)

module名称如果没有大写字母开头, 报语法错误如下, 猜测原因与Scala疑似中文命名问题后续类似, 不过Ruby好像将中文字符认作了非大写的:

  1. 特殊字符过滤.rb:2: class/module name must be CONSTANT (SyntaxError)

方法remove_chars_cn未能中文, 由于Jekyll的Liquid脚本语言貌似不支持Unicode标识符, 会报错:

  1. Liquid Warning: Liquid syntax error (line 6): Unexpected character in "{{ post.description | strip_html | strip_newlines | 删除特殊字符 }}" in 全文索引.json

在本地运行通过后, 将包括插件在内的修改提交到GitHub后, 发现网站加载json文件时报错"invalid JSON", 查看取json的请求响应内容后, 各种尝试后初步认定是插件未成功运行, 一通搜之后发现, GitHub Pages不支持任意插件的运行: jekyll plugin not work on github

解决方法就是本地jekyll生成网站源码后, 将网站源码提交到repo里.

参考Configuration Options_config.yml中将输出目录改为docs:

  1. destination: docs

再将原本的jekyll文件都移到repo根下, 运行生成后提交, 搞定.

原文链接:http://www.cnblogs.com/program-in-chinese/p/10676673.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号