我有一个我在Jekyll网站上使用的自定义液体过滤器,
{{ page.url | git_modified }}
从git log(plugin code here)生成修改日期。
通常我可以添加额外的过滤器,将其转换为字符串或XML模式,具体取决于上下文,例如: {{ page.url | git_modified | date_to_string }}
。除非由于某种原因我的git_modified
过滤器无法为某些帖子返回时间对象,否则一切都很糟糕。在那种情况下,我试图写一个体面的失败条件,但不能完全解决这个问题。
我想将我的调用包装在一个流畅的if
语句中,以检查变量是否首先被定义:
{% if defined?( {{ page.url | git_modified }} %}
但我似乎无法在Liquid块选项({{
,{%
)中使用Liquid标签(%}
)。我以为我可以使用Liquid capture
来解决这个问题:
{% capture page_modified %}{{ page.url | git_modified }}{% endcapture %}
{% if defined?(page_modified) %}
{{ page.url | git_modified | date_to_string }}
{% endif %}
但所说的变量似乎不适用于if
语句。有什么建议?
答案 0 :(得分:4)
尝试这样做:
{% capture page_modified %}
{{ page.url }}
{% endcapture %}
{% if page_modified %}
{{ page.url }}
{% endif %}
如果未定义page_modified
,则其值仍为nil
,因此只需使用if
构造,就像在纯Ruby中一样。我在这里测试了jekyll 1.0.0.beta2 - jekyll new test
,然后使用上面的代码创建了一个文件 - 它有效。 :)