Raf*_*ael 5 ruby liquid jekyll
我在Jekyll
1周前开始使用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
会在那里做到这一点.有任何想法吗?
虽然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)