Filter 在液体标签中使用过滤器

Filter 在液体标签中使用过滤器,filter,tags,liquid,jekyll,Filter,Tags,Liquid,Jekyll,我正在使用jekyll和Liquid在github页面上生成一个静态网站 我想根据文档中的内容量是否达到特定数量的作品来决定一些内容。jekyll有一个液体过滤器,可以计算我想在if标签中使用的字数。我试过这个: {% if page.content | number_of_words > 200 %} ... {% endif %} 但它似乎不起作用。我还尝试将结果分配给一个变量并使用它,并从过滤器中捕获输出。但到目前为止,我运气不好 有人在液体标签上使用过过滤器吗 {%

我正在使用jekyll和Liquid在github页面上生成一个静态网站

我想根据文档中的内容量是否达到特定数量的作品来决定一些内容。jekyll有一个液体过滤器,可以计算我想在if标签中使用的字数。我试过这个:

{% if page.content | number_of_words > 200 %} 
    ...
{% endif %} 
但它似乎不起作用。我还尝试将结果分配给一个变量并使用它,并从过滤器中捕获输出。但到目前为止,我运气不好

有人在液体标签上使用过过滤器吗

{% capture number_of_words_in_page %}{{page.content | number_of_words}}{% endcapture %}
{% if number_of_words_in_page > 200 %} 
    ...
{% endif %} 

试试这个。

刚刚找到,它提供了如何为Github编写自定义标记的详细信息。这看起来是一个可能的方向,同时还提供了对其他开发人员的许多其他定制的访问

编辑:这不再是最新的解决方案,请参见并更新投票:

在最初编写此答案时(2011年)
assign
不是一个可行的解决方案,因为它不适用于过滤器。这一功能是在一年后推出的

下面留下我2011年的原始答案,以防有人需要在旧版本的Liquid中处理此问题


我认为不可能以这种方式在标签中使用过滤器;这似乎是不可能的

然而,我已经设法建立了一套可能解决您的特定问题的条件(区分一个页面是长还是短于200个单词)。就是这样:

{% capture truncated_content %}{{ page.content | truncatewords: 200, '' }}{% endcapture %}

{% if page.content != truncated_content %}
  More than 200 words
{% else %}
  Less or equal to 200 words
{% endif %}
为了使计算更加精确,最好使用
strip\u html
操作符。这给了我们:

{% capture text %}{{ page.content | strip_html }}{% endcapture %}
{% capture truncated_text %}{{ text | truncatewords: 200, '' }}{% endcapture %}

{% if text != truncated_text %}
  More than 200 words
{% else %}
  Less or equal to 200 words
{% endif %}

问候

不:-)在发布之前已经尝试过了。问题是捕获生成的字符串变量在if标记中无法正常工作。Oops!我以前也遇到过同样的问题,最后我用了这个。但现在我记得我用字符串检查了它。我认为这些对Github不起作用。它们可以在其他地方使用。是的,所以我才发现:-(在花了几个小时学习基本Ruby并编写了我需要的代码之后。叹气。谢谢。这是迄今为止最好的答案。对于没有插件的github托管非常有效!我不知道为什么你会被否决。这个解决方案对我有效。谢谢!这应该是答案!我同意@HeShiming。这应该是答案。看起来像是这是唯一干净的方法。是否真的没有文档解释比较不能与过滤器相结合?仍然(2017年11月)是准确的答案。上述解决方法有效。而且仍然没有像…
{%if(url | truncate:6',)==='/blog/'%}
(导致总是
true
,而不是总是
false
顺便说一句,这样你就不会过早欢呼了:-)
{% assign val = page.content | number_of_words %}
{% if val > 200 %}
 ....
{% endif %}
{% assign val = page.content | number_of_words %}
{% if val > 200 %}
 ....
{% endif %}