Jekyll中Liquid模板的算术计算,计算预计阅读时间
Arithmetic calculation on Liquid template in Jekyll to calculate estimated reading time
我 1 周前开始使用 Jekyll
,对 Ruby 一无所知,我想实现以下功能。
来自 Jekyll
documentation 我可以使用下面的模板来计算一篇文章中的单词:
{{ 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
是否可以解决问题。有什么想法吗?
虽然 Jekyll 是用 Ruby 编写的,但在使用它时通常不需要编写任何 Ruby。它使用 Liquid,它被明确设计为允许用户创建页面设计而不允许他们 运行 任意代码。
Liquid 确实有 tags (Jekyll adds some more),它使用 {% %}
,但在这种情况下,我认为您可能会对 Erb 模板语言感到困惑,它使用 <% %>
来执行 Ruby代码。
如果需要,您可以创建自己的自定义 Liquid 标签和过滤器,但在这种情况下,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 %}
我 1 周前开始使用 Jekyll
,对 Ruby 一无所知,我想实现以下功能。
来自 Jekyll
documentation 我可以使用下面的模板来计算一篇文章中的单词:
{{ 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
是否可以解决问题。有什么想法吗?
虽然 Jekyll 是用 Ruby 编写的,但在使用它时通常不需要编写任何 Ruby。它使用 Liquid,它被明确设计为允许用户创建页面设计而不允许他们 运行 任意代码。
Liquid 确实有 tags (Jekyll adds some more),它使用 {% %}
,但在这种情况下,我认为您可能会对 Erb 模板语言感到困惑,它使用 <% %>
来执行 Ruby代码。
如果需要,您可以创建自己的自定义 Liquid 标签和过滤器,但在这种情况下,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 %}