28

私は jekyll と Liquid を使用して、github ページに静的な Web サイトを生成しています。

ドキュメント内のコンテンツの量が特定の作品数に達したかどうかに基づいて、コンテンツの決定を行いたいと考えています。jekyllには、ifタグで使用したい単語の数をカウントする液体フィルターがあります。私はこれを試しました:

{% if page.content | number_of_words > 200 %} 
    ...
{% endif %} 

しかし、うまくいかないようです。また、結果を変数に割り当てて使用し、フィルターからの出力をキャプチャしようとしました。しかし、これまでのところ、私は運がありませんでした。

液体タグでフィルターを使用できた人はいますか?

4

4 に答える 4

21

編集: これは最新のソリューションではなくなりました。代わりに、 Martin Wang のassignベースのソリューションを参照して賛成してください:

{% assign val = page.content | number_of_words %}
{% if val > 200 %}
 ....
{% endif %}
>```

この回答が最初に書かれた時点(2011年)assignは、フィルターでは機能しなかったため、実行可能なソリューションではありませんでした。この機能は、1 年後の 2012年に導入されました。

誰かが古いバージョンのLiquidでこの問題に対処する必要がある場合に備えて、2011年の元の回答を以下に残します。


そのようにタグ内でフィルターを使用することはできないと思います。それは不可能に思えます。

ただし、特定の問題を解決する可能性のある一連の条件を作成することができました (ページが 200 語より長いか短いかを判断します)。これです:

{% capture truncated_content %}{{ page.content | truncatewords: 200, '' }}{% endcapture %}

{% if page.content != truncated_content %}
  More than 200 words
{% else %}
  Less or equal to 200 words
{% endif %}

計算をもう少し正確にするために、strip_html演算子を使用するのが賢明かもしれません。これにより、次のことがわかります。

{% capture text %}{{ page.content | strip_html }}{% endcapture %}
{% capture truncated_text %}{{ text | truncatewords: 200, '' }}{% endcapture %}

{% if text != truncated_text %}
  More than 200 words
{% else %}
  Less or equal to 200 words
{% endif %}

よろしく!

于 2011-05-23T13:51:25.800 に答える
1

https://github.com/mojombo/jekyll/wiki/Pluginsを見つけたところ、Github のカスタム タグの作成方法が詳しく説明されています。これは、他の開発者からの他の多くのカスタマイズへのアクセスを提供するだけでなく、進むべき方向のように見えます.

于 2011-05-23T03:21:25.887 に答える
0
{% capture number_of_words_in_page %}{{page.content | number_of_words}}{% endcapture %}
{% if number_of_words_in_page > 200 %} 
    ...
{% endif %} 

これを試して。

于 2011-05-23T01:48:28.993 に答える