Jekyll中液体模板的算术计算,用于计算估计的读数时间

Raf*_*ael 5 ruby liquid jekyll

我在Jekyll1周前开始使用Ruby而不知道,我想实现以下功能.

Jekyll 文档中我可以使用以下模板来计算文章中的单词:

{{ page.content | number_of_words }}
Run Code Online (Sandbox Code Playgroud)

我想根据200 words per minute平均假设,使用此信息计算文章的估计阅读时间(以分钟为单位).其中给出了以下简单公式:

number_of_words / 200
Run Code Online (Sandbox Code Playgroud)

不确定,但根据我读到的关于Ruby的内容,我应该{% %}用来执行我的计算,但我不确定我是否可以使用其中的内容{{ page.content | number_of_words }}来执行除法.

这是我目前的情况:

.html文件:

.
.
<p class="meta">
    {% print {{number_of_words}} / 200 %}
</p>
.
.
Run Code Online (Sandbox Code Playgroud)

我确信number_of_words上面使用的不存在,我不确定是否print会在那里做到这一点.有任何想法吗?

mat*_*att 7

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

液体确实有标签(杰奇增加多一些),其使用{% %},但在这种情况下,我认为你可能会与再培训局模板语言,它使用被越来越糊涂<% %>执行Ruby代码.

如果需要,您可以创建自己的自定义Liquid标签和过滤器,但在这种情况下,divided_by过滤器似乎可以执行您想要的操作:

{{ page.content | number_of_words | divided_by: 200 }}
Run Code Online (Sandbox Code Playgroud)

请注意,这是整数除法,与您的示例相同,因此如果字数小于200,则结果将为零.要检查这一点并且仅在总数> 0时包含它,您可以使用assign标记(可以与过滤器一起使用)和if标记,如下所示:

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

{% if read_time > 0 %}
Read time: {{ read_time }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)