【问题标题】:Implementing a glossary in Jekyll在 GitHub Pages 上实现词汇表
【发布时间】:2022-12-01 07:42:31
【问题描述】:

我正在使用 Jekyll 将文档站点从 Madcap Flare 移植到 GitHub Pages。我想知道的一件事是有没有一种方法可以实现类似于 Flare 的自动词汇表:

https://www.madcapsoftware.com/blog/guest-post-madcap-flare-101-7-the-glossary/

总之:我想要一个由术语和定义组成的词汇表文件。然后,如果某个术语出现在主题中,它会自动成为定义的链接或弹出链接。

如果有人这样做或知道这样做的方法,我将不胜感激。

P.

【问题讨论】:

  • 我也想要这个!这需要一些静态 Jekyll 站点的代码。我正在考虑创建一个术语/定义字典的生成器和一个 hook 以根据该索引创建修改后的内容 - 逐词或逐词组(也有待定义)可能会很慢。对其他意见感兴趣。

标签: jekyll jekyll-extensions madcap


【解决方案1】:

这是上面评论中我的想法的一些代码。匹配术语并将文本转换为链接或类似内容的逻辑尚不可用。

这只是为职位工作的一个粗略想法。如果您设法运行这样的网站,我很乐意看到任何工作代码。无论如何,我希望这会有所帮助。

_data/glossary/en.yml 中的数据文件

- term: test
  definition: this is a test definition
- term: another
  definition: this is a another definition

用于创建可访问索引变量的生成器插件

module Jekyll
    class GlossaryEntryGenerator < Jekyll::Generator
      safe true
  
      def generate(site)
        @glossary_entries = Hash.new
        @site = site

        @site.data["glossary"]["en"].each do |entry|
            add_term(entry["term"], entry["definition"])
        end
  
        @site.config["glossary_entries"] = @glossary_entries
      end

      private 

      def add_term(term, definition) 
        @glossary_entries[term] = [term, definition]
      end 
    end 
end

钩子插件替换内容

module Foobar
  def self.transform(site)
    
    puts site.config["glossary_entries"]

    site.documents.each do |doc| 
      puts doc
      # page.content match word from @glossary_entries
      doc.content.gsub!('foo', 'bar')
    end 
  end
end

Jekyll::Hooks.register  :site, :pre_render do |site|
  Foobar.transform(site)
end  

构建站点时,任何“foo”内容都将转换为“bar”。这可以是任何东西,例如格式、链接等

【讨论】:

    猜你喜欢
    • 2020-10-24
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2018-08-11
    • 2017-02-18
    • 2018-11-08
    相关资源
    最近更新 更多