zoukankan      html  css  js  c++  java
  • 为Jekyll+GitHub Pages添加全文搜索功能

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

    源码库: 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:

    module Jekyll
      module C字符过滤器
        def remove_chars_cn(输入)
          输入.gsub! '\','\'
          输入.gsub! /	/, '    '
          输入.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根下, 运行生成后提交, 搞定.

  • 相关阅读:
    注册系统
    android登录界面
    android作业 购物界面
    第六周jsp作业
    JSP第四周
    JSP第二次作业
    JSP第一次作业
    第一周软件测试
    第九次安卓
    购物菜单
  • 原文地址:https://www.cnblogs.com/program-in-chinese/p/10676673.html
Copyright © 2011-2022 走看看