Add documentation for custom tag blocks (#7359)
Merge pull request 7359
This commit is contained in:
parent
9a66a1614e
commit
7d76d5e48e
|
@ -70,3 +70,46 @@ And we would get something like this on the page:
|
||||||
```html
|
```html
|
||||||
<p>page rendered at: Tue June 22 23:38:47 –0500 2010</p>
|
<p>page rendered at: Tue June 22 23:38:47 –0500 2010</p>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Tag Blocks
|
||||||
|
|
||||||
|
The `render_time` tag seen above can also be rewritten as a tag block by
|
||||||
|
inheriting the `Liquid::Block` class. Look at the example below:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
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)
|
||||||
|
```
|
||||||
|
|
||||||
|
We can now use the tag block anywhere:
|
||||||
|
|
||||||
|
{% raw %}
|
||||||
|
```liquid
|
||||||
|
{% render_time %}
|
||||||
|
page rendered at:
|
||||||
|
{% endrender_time %}
|
||||||
|
```
|
||||||
|
{% endraw %}
|
||||||
|
|
||||||
|
And we would still get the same output as above on the page:
|
||||||
|
|
||||||
|
```html
|
||||||
|
<p>page rendered at: Tue June 22 23:38:47 –0500 2010</p>
|
||||||
|
```
|
||||||
|
|
||||||
|
<div class="note info">
|
||||||
|
<p>In the above example, the tag block and the tag are both registered with
|
||||||
|
the name <code>render_time</code> but to register a tag and a tag block using
|
||||||
|
the same name in the same project is not recommended as this may lead to
|
||||||
|
conflicts.</p>
|
||||||
|
</div>
|
Loading…
Reference in New Issue