2013-03-25 66 views
1

的价值主张我有一个自定义液体过滤我在杰基尔网站使用,评估液体“如果”基于液体过滤器

{{ page.url | git_modified }} 

产生从git的日志(plugin code here)修改日期。

通常,我可以添加额外的过滤器,根据上下文将其转换为字符串或XML模式。 {{ page.url | git_modified | date_to_string }}。除非由于某些原因,我的git_modified过滤器无法为某个帖子返回一个时间对象,否则一切都会很生动。在这种情况下,我试图写出一个体面的失败情况,但不能完全弄清楚这一点。

我想只是包装我的电话在液体if语句来检查,如果变量首先定义:

{% if defined?({{ page.url | git_modified }} %} 

但我似乎不能够使用液体标签({{)内部液体块选项({%,%})。我以为我可以解决这个液体capture

{% capture page_modified %}{{ page.url | git_modified }}{% endcapture %} 
{% if defined?(page_modified) %} 
{{ page.url | git_modified | date_to_string }} 
{% endif %} 

,但表示变量似乎并没有提供给if语句。有什么建议么?

回答

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进行了测试,然后用上面的代码创建了一个文件 - 它工作。 :)