3

Jekyllの投稿の内容を単語に分割しようとしていますが、次のことを試しました。

{% for word in post.content | split:' ' %}
    {% do some stuff %}
{% endfor %}

残念ながら、これは何もしません。「単語」は投稿全体になります。私はGithubPagesでこのコードを使用しているため、残念ながら、これを処理するプラグインを作成することはできません。スプリットフィルターを間違って使用していますか?Liquidは私がやろうとしていることをサポートしていますか?

4

2 に答える 2

10

を使用すると、空白で分割できるようですsplit: 

したがって、次のようなことを試すことができます。

{% capture words %}{{ post.content | split:  }}{% endcapture %}

また:

{% assign words = post.content | split:  %}

私がこれまでにテストしたことから、キャプチャタグは値を変数に割り当てるときに配列要素に対して暗黙的な結合を行うように見えるため、後者(タグの割り当て)を使用する必要があるようです。

使用:

{% for post in site.posts limit:1 offset:6 %}
  {% assign words = post.content | split:  %}
  {% for word in words %}{{ word }} {% endfor %}
{% endfor %}

投稿内容全体を再現しているようです。内側のforループの空白が重要です。

ここでのメモと同様に、一部の単語を空白で結合する必要がある場合、結合タグでは、次のように文字を引用符で囲む必要があるようですjoin:' '

編集:

結局、空白で分割を試みましたが、開発環境では機能していましたが、GithubPagesでは機能しませんでした。Pagesはバージョン2.2.2を実行しているようですが、split()フィルターはバージョン2.3.0で導入されました。私の開発環境は2.4.1を実行していました。うまくいけば、Githubの優秀な人々に、Liquidのバージョンを更新してもらうのに十分な苦労をすることができます。:)

于 2012-10-28T15:40:36.460 に答える
3

フィルタ(分割など)は、{%タグ%}ではなく{{出力}}でのみ使用できます。

次のようにキャプチャ関数を使用すると、分割を実行できる場合があります。{%capture'foo'%} {{post.content | 分割:''}} {%endcapture%}

于 2012-09-03T19:44:10.370 に答える