2016-02-13 47 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