Add documentation for custom tag blocks (#7359)

Merge pull request 7359
This commit is contained in:
Sri Pravan Paturi 2018-11-08 04:10:10 +05:30 committed by jekyllbot
parent 9a66a1614e
commit 7d76d5e48e
1 changed files with 43 additions and 0 deletions

View File

@ -70,3 +70,46 @@ And we would get something like this on the page:
```html
<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>