タグ
サイトでカスタムLiquidタグを使用したい場合は、タグシステムで行うことができます。組み込み例として、Jekyllにはhighlight
やinclude
タグがあります。以下は、ページがレンダリングされた時を出力するカスタム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::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
で登録しました。しかし、同じプロジェクトでタグとタグブロックに同じ名前を使用することは推奨しません。競合する可能性があります。