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
|
||||
<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