如何在Jekyll中进行base64编码

时间:2017-08-26 00:38:57

标签: ruby jekyll liquid jekyll-extensions

我正在坚持这个问题。

无论如何在Jekyll中将字符串编码为base64?

我想在将代码推送到Github Pages之前或之后为我博客中的每个帖子制作json文件。

- 2017-08-26-post1.md
- 2017-08-26-post1.md

- 2017-08-26-post1.json
- 2017-08-26-post1.json

可能类似于{{ some_string | base64_encoded }}

2 个答案:

答案 0 :(得分:2)

您可以创建自己的液体标签并提供您的字符串作为参数。然后使用ruby https://ruby-doc.org/stdlib-2.1.3/libdoc/base64/rdoc/Base64.html将该字符串转换为base64并将其输出到您的页面。

这样的事情可能有所帮助,这是我在这里找到的一个例子 - https://blog.sverrirs.com/2016/04/custom-jekyll-tags.html

class AdsInlineTag < Liquid::Tag
  def initialize(tag_name, input, tokens)
    super
    @input = input
  end

  def render(context)
    # Split the input variable (omitting error checking)
    input_split = split_params(@input)
    adclient = input_split[0].strip
    adslot = input_split[1].strip

    # Write the output HTML string
    output =  "<div style=\"margin: 0 auto; padding: .8em 0;\"><script async "
    output += "src=\"//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\">"
    output += "</script><ins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"#{adclient}\""
    output += "data-ad-slot=\"#{adslot}\" data-ad-format=\"auto\"></ins><script>(adsbygoogle ="
    output += "window.adsbygoogle || []).push({});</script></div>"

    # Render it on the page by returning it
    return output;
  end

  def split_params(params)
    params.split("|")
  end
end
Liquid::Template.register_tag('ads', AdsInlineTag)

希望这会有所帮助,我会尝试为jekyll制作一个简单的base64液体标签,并在我开始工作时更新。

答案 1 :(得分:0)

以下是用Ruby编写的工作base64过滤器的示例:

require "base64"

module Base64Filter
  def base64_encode (input)
    Base64.encode64(input)
  end
end

Liquid::Template.register_filter(Base64Filter) # register filter globally

在jekyll中创建一个新文件base64_filter.rb并将其放在根目录的_plugins文件夹中。如果您处于serve模式,则需要重新启动服务器。

然后你可以使用它,例如:

{{ site.email | base64_encode }}

注意: Github Pages不支持插件!