如何编写/调用带有两个参数的自定义 Liquid Tag?
上下文: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 时,显示的选项卡应该看起来不同(<li class="active">...)。虽然这可以通过上面链接的技术来解决,但它很难看:
{% 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,包含 {% ... %} 内的所有内容,而我需要两个单独的值。我可以有标签 split(',') 或其他东西,但还有其他问题吗?
- 它没有被解释:它的字面意思是“ extra_tab[0] extra_tab[1] ”。
那么:如何诱导 Liquid 扩展对“extra_tab [*]”的引用?