1

我有一个在 Jekyll 站点中使用的自定义液体过滤器,

{{ page.url | git_modified }}

它从 git 日志(此处为插件代码)生成修改日期。

通常我可能会添加额外的过滤器以将其转换为字符串或 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语句。有什么建议么?

4

1 回答 1

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然后用上面的代码创建了一个文件——它成功了。:)

于 2013-03-26T07:08:17.383 回答