ruby – 在插件中获取Jekyll配置

前端之家收集整理的这篇文章主要介绍了ruby – 在插件中获取Jekyll配置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想对Jekyll Only First Paragraph plugin进行更改,以便生成“阅读更多”链接是可配置的选项.

为了做到这一点,我需要能够访问插件的AssetFilter中的Jekyll网站配置.随着配置的可用,我可以做出改变.我不知道如何使网站配置可用于插件.

下面的代码演示了我想要的site.config可用的位置:

require 'nokogiri'

module Jekyll
  module AssetFilter
    def only_first_p(post)
      # site.config needs to be available here to modify the output based on the configuration

      output = "<p>"
      output << Nokogiri::HTML(post["content"]).at_css("p").inner_html
      output << %{</p><a class="readmore" href="#{post["url"]}">Read more</a>}

      output
    end
  end
end

Liquid::Template.register_filter(Jekyll::AssetFilter)

这可以实现吗

解决方法

概观

您可以在插件中访问Jekyll配置选项:

Jekyll.configuration({})['KEY_NAME']

如果配置密钥包含嵌套级别,格式为:

Jekyll.configuration({})['KEY_LEVEL_1']['KEY_LEVEL_2']

如果_config.yml包含:

testvar: new value

custom_root:
    second_level: sub level data

简单地输出这些值的基本示例如下所示:

require 'nokogiri'

module Jekyll
  module AssetFilter
    def only_first_p(post)

      @c_value = Jekyll.configuration({})['testvar']
      @c_value_nested = Jekyll.configuration({})['custom_root']['second_level']

      output = "<p>"

      ### Confirm you got the config values
      output << "<br />"
      output << "c_value: " + @c_value + "<br />"
      output << "c_value_nested: " + @c_value_nested + "<br />"
      output << "<br />"
      ###

      output << Nokogiri::HTML(post["content"]).at_css("p").inner_html
      output << %{</p><a class="readmore" href="#{post["url"]}">Read more</a>}

      output
    end
  end
end

Liquid::Template.register_filter(Jekyll::AssetFilter)

当然,你会想要检查一下验证配置键/值是否在使用它们之前被定义.这为读者留下了一个练习.

另一个可能的选择

Jekyll Plugins Wiki Page的“液体过滤器”部分包含以下内容

In Jekyll you can access the site object through registers. As an example,you can access the global configuration (_config.yml) like this: @context.registers[:site].config[‘cdn’].

我没有花时间去找工作,但也可能值得一试.

原文链接:https://www.f2er.com/ruby/272258.html

猜你在找的Ruby相关文章