標籤

如果您想在您的網站中包含自訂的 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 標籤必須實作

方法 說明

render

輸出標籤的內容。

您還必須使用 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,但建議不要在同一個專案中使用相同名稱註冊標籤和標籤區塊,因為這可能會導致衝突。