動态示範如下:
源碼庫:
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, 另參考
, 在
_plugins
下添加腳本
特殊字元過濾.rb
:
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好像将中文字元認作了非大寫的:
特殊字元過濾.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 github解決方法就是本地jekyll生成網站源碼後, 将網站源碼送出到repo裡.
參考
Configuration Options在
_config.yml
中将輸出目錄改為
docs
destination: docs
再将原本的jekyll檔案都移到repo根下, 運作生成後送出, 搞定.