标签

如果您想在您的网站中包含自定义 liquid 标签,您可以通过连接到标记系统来实现。Jekyll 添加的内置示例包括 highlightinclude 标签。下面是一个自定义 liquid 标签的示例,它将输出页面渲染的时间

module Jekyll
  class RenderTimeTag < Liquid::Tag

    def initialize(tag_name, text, tokens)
      super
      @text = text
    end

    def render(context)
      "#{@text} #{Time.now}"
    end
  end
end

Liquid::Template.register_tag('render_time', Jekyll::RenderTimeTag)

至少,liquid 标签必须实现

方法 说明

渲染

输出标签的内容。

您还必须使用 Liquid 模板引擎注册自定义标签,如下所示

Liquid::Template.register_tag('render_time', Jekyll::RenderTimeTag)

在上面的示例中,我们可以将以下标签放置在我们的某个页面的任意位置

<p>{% render_time page rendered at: %}</p>

我们会在页面上得到类似这样的内容

<p>page rendered at: Tue June 22 23:38:47 –0500 2010</p>

标签块

上面看到的 render_time 标签还可以通过继承 Liquid::Block 类来重写为标签块。请看下面的示例

module Jekyll
  class RenderTimeTagBlock < Liquid::Block

    def render(context)
      text = super
      "<p>#{text} #{Time.now}</p>"
    end

  end
end

Liquid::Template.register_tag('render_time', Jekyll::RenderTimeTagBlock)

我们现在可以在任意位置使用标签块

{% render_time %}
page rendered at:
{% endrender_time %}

我们仍然会在页面上获得与上面相同的输出

<p>page rendered at: Tue June 22 23:38:47 –0500 2010</p>

在上面的示例中,标签块和标签都使用名称 render_time 注册,但建议不要在同一个项目中使用相同的名称注册标签和标签块,因为这可能会导致冲突。