我正在坚持这个问题。
无论如何在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 }}
答案 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不支持插件!