Использование фильтров в тегах Liquid - PullRequest
23 голосов
/ 12 мая 2011

Я использую jekyll и Liquid для создания статического веб-сайта на страницах github.

Я хочу основывать некоторые решения о содержании на том, достиг ли объем содержимого в документе определенного количества работ.У jekyll есть жидкостный фильтр, который подсчитывает количество слов, которые я хочу использовать в теге if.Я пробовал это:

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

Но, похоже, не работает.Я также попытался присвоить результат переменной и использовать его, а также захватить вывод из фильтра.Но пока мне не повезло.

Кто-нибудь умудрился использовать фильтр в жидком ярлыке?

Ответы [ 4 ]

25 голосов
/ 11 декабря 2013
{% assign val = page.content | number_of_words %}
{% if val > 200 %}
 ....
{% endif %}
18 голосов
/ 23 мая 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 %}

Привет!

0 голосов
/ 23 мая 2011

Только что найдено https://github.com/mojombo/jekyll/wiki/Plugins, который дает подробную информацию о том, как написать пользовательский тег для Github. Это выглядит как возможное направление, а также обеспечивает доступ ко многим другим настройкам от других разработчиков.

0 голосов
/ 23 мая 2011
{% capture number_of_words_in_page %}{{page.content | number_of_words}}{% endcapture %}
{% if number_of_words_in_page > 200 %} 
    ...
{% endif %} 

Попробуйте это.

...