動態演示以下:
[上傳失敗, 請自行搜索原文]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根下, 運行生成後提交, 搞定.