2016-02-13 49 views
4

我在1周前开始使用Jekyll,对Ruby没有任何认识,我想实现以下功能。在Jekyll液体模板上的算术计算来计算估计的阅读时间

Jekylldocumentation我可以使用下面的模板计算的一篇文章中的话:

{{ page.content | number_of_words }} 

我想用这个信息来计算,在几分钟内估计阅读时间的文章的基础上,平均假设200 words per minute。这给下面这个简单的公式:

number_of_words/200 

没有被确定,但根据我所了解Ruby,我应该用{% %}执行我的计算,但不知道我是否可以使用内的{{ page.content | number_of_words }},以进行分工。

这是我目前有:

的.html文件:

. 
. 
<p class="meta"> 
    {% print {{number_of_words}}/200 %} 
</p> 
. 
. 

我相信number_of_words如上所使用的不存在,不知道print会做的伎俩在那里。任何帮助?

回答

4

虽然Jekyll是用Ruby编写的,但通常在使用Ruby时不需要编写任何Ruby。它使用Liquid,它明确设计为允许用户创建页面设计而不允许它们运行任意代码。

液体确实有tags(哲基尔增加some more),它使用{% %},但在这种情况下,我认为你可能会与再培训局模板语言,它采用<% %>执行Ruby代码感到困惑。

如果需要你可以创建自己的定制液体标签和过滤器,但在这种情况下,是divided_by过滤器,这似乎做你想要什么:

{{ page.content | number_of_words | divided_by: 200 }} 

注意这是整数除法,与你的例子相同,所以如果字数小于200,结果将为零。要检查此,只包括它如果总和> 0,则可以使用assign标签(可以用滤镜一同使用)和if标签是这样的:

{% assign read_time = page.content | number_of_words | divided_by: 200 %} 

{% if read_time > 0 %} 
Read time: {{ read_time }} 
{% endif %} 
+0

感谢您的工作!最后一个,如果你的注释关于'0',如果少于200,你会这样{{page.content | number_of_words | divide_by:200}}'在if语句中用于检查'> 0',因此如果为0忽略打印那个? – Rafael

+0

@Rafael看到我的更新,我已经添加了一个例子。 – matt

+0

太棒了。我需要进一步研究'Liquid',因为它看起来很有趣。谢谢你的帮助。 @马特 – Rafael