【发布时间】:2015-06-11 10:07:33
【问题描述】:
如何编写/调用带有两个参数的自定义 Liquid 标签?
上下文:Jekyll 2.1.1
我有一些页面显示为标签集。我的页面前端允许为某些页面定义额外的选项卡,如下所示:
---
blah: blah
extra-tabs:
- A page: a-page.md
- Another page: other-page.md
---
感谢Iterate over hashes in Liquid Templates,我可以解决这个问题。但是……
我有一个额外的限制:在渲染 a-page.md 时,显示的选项卡应该看起来不同(
{% for extra_tab_hash in page.extra-tabs %}
{% for extra_tab in extra_tab_hash %}
{% if page.name == extra_tab[1] %}
<li class="active"><a href="#">{{extra_tab[0]}}</a></li>
{% else %}
<li><a href="{{ extra_tab[1] | in2out }}">{{extra_tab[0]}}</a></li>
{% endif %}
{% endfor %}
{% endfor %}
我想写一个自定义标签来替换条件 if/else/endif,类似于:
{% for extra_tab_hash in page.extra-tabs %}
{% for extra_tab in extra_tab_hash %}
{% mytab extra_tab[0] extra_tab[1] %}
{% endfor %}
{% endfor %}
我有两个问题:
- mytab 只接收一个输入,通常称为 text,其中包含 {% ... %} 内的所有内容,而我需要两个单独的值。我可以有 Tag split(',') 之类的,但还有其他问题吗?
- 它没有被解释:它的字面意思是“extra_tab[0] extra_tab[1]”。
那么:如何诱导 Liquid 扩展对“extra_tab[*]”的引用?
【问题讨论】: