如何选择Liquid中的特定项目

时间:2016-10-07 21:10:23

标签: jekyll liquid

假设我有一个标记列表:iFix_6.3iFix_7.0iFix_7.1iFix_8.0announcement等等...我想要仅在某些几个标记上运行操作。如何检查这些多个值?

contains,但我正在寻找它的反面和多个值......

以下是我实际过滤掉包含iFix_6.3标记的所有帖子的示例,从而显示所有其他帖子。这实际上还不起作用......需要扩展以适用于多个标签。

// posts with iFix_xxx tag should be filtered from the main posts view.
{% assign postUpdates = site.posts | where_exp:"item", "item.tags != 'iFix_6.3'" %} 
{% for post in postUpdates limit:10 %}
<div class="postItem inline">
    <p class="postDate">{% if post.pinned %}<span class="glyphicon glyphicon-pushpin"></span>{% endif %}{{post.date | date: '%B %d, %Y'}}</p>
    <p class="postTitle"><a href="{{site.baseurl}}{{post.url}}">{{post.title}}</a></p>
</div>
{% endfor %}

2 个答案:

答案 0 :(得分:1)

您可以使用excluded_tags和逗号分隔的标记字符串构建排除标记数组(split)来完成此操作。然后,对于每个帖子,您迭代帖子的标签。使用excluded_tags检查标记是否在contains,如果是,则使用filtered_out控制流标记将标记unless提升为不显示帖子。

{% assign excluded_tags = "iFix_6.2,iFix_6.3,announcement" | split : "," %}

{% for post in site.posts limit:10 %}
   {% assign filtered_out = False %}
   {% for tag in post.tags %}
       {% if excluded_tags contains tag %}
           {% assign filtered_out = True %}
           {% break %}
       {% endif %}
   {% endfor %}

   {% unless filtered_out %}
       ...
   {% endunless %}
{% endfor %}

答案 1 :(得分:0)

似乎unless会解决问题。

{% assign postUpdates = site.posts | where_exp:"item", "unless item.tags contains 'iFix_6.3'" %}