动态演示以下:
[上传失败, 请自行搜索原文]html
源码库: program-in-chinese/team_websitegit
找到此JS工具: christian-fei/Simple-Jekyll-Search, 按安装说明先完成了对题目/类别/日期的搜索, 本地运行不错. 再接再砺添加了对描述和全文(post.content)的搜索, 详见全文索引.jsongithub
发现生成的json文件中, 特殊字符如引号使得json语法出错:
web
发现前人对一样问题的解决方法"full-text search" donot work! · Issue #63 · christian-fei/Simple-Jekyll-Search, 另参考christian-fei/Simple-Jekyll-Search, 在_plugins
下添加脚本特殊字符过滤.rb
:json
module Jekyll module C字符过滤器 def remove_chars_cn(输入) 输入.gsub! '\\','\' 输入.gsub! /\t/, ' ' 输入.gsub! '@','' 输入.gsub! '$','' 输入.gsub! '%','' 输入.gsub! '&','' 输入.gsub! '"','' 输入.gsub! '{','' 输入.gsub! '}','' 输入 end end end Liquid::Template.register_filter(Jekyll::C字符过滤器)
module名称若是没有大写字母开头, 报语法错误以下, 猜想缘由与Scala疑似中文命名问题后续相似, 不过Ruby好像将中文字符认做了非大写的:ruby
特殊字符过滤.rb:2: class/module name must be CONSTANT (SyntaxError)
方法remove_chars_cn未能中文, 因为Jekyll的Liquid脚本语言貌似不支持Unicode标识符, 会报错:工具
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 githubpost
解决方法就是本地jekyll生成网站源码后, 将网站源码提交到repo里.网站
参考Configuration Options在_config.yml
中将输出目录改成docs
:ui
destination: docs
再将本来的jekyll文件都移到repo根下, 运行生成后提交, 搞定.