2016-10-07 3 views
2

Angenommen ich eine Liste von Tags haben: iFix_6.3, iFix_7.0, iFix_7.1, iFix_8.0, announcement, und so weiter ... und ich möchte nur auf bestimmten mehrere-Tags eine Operation auszuführen. Wie kann ich nach diesen mehreren Werten suchen?So wählen Sie bestimmte Elemente in Liquid

Es gibt contains, aber ich bin für das Gegenteil davon und für mehrere Werte suchen ...

Hier ist ein Beispiel, wo ich herausfiltern tatsächlich alle Beiträge, die die iFix_6.3 Tag enthalten, zeigen somit alle anderen Beiträge. Dies funktioniert noch nicht ... plus muss erweitert werden, um für mehrere Tags zu arbeiten.

// 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 %} 
+0

Wie wäre es mit dem Durchschleifen aller Beiträge und Filtern mit einer if-Anweisung? – JoostS

Antwort

1

Sie können dies tun, indem sie eine Reihe von ausgeschlossenen Tags Gebäude (excluded_tags) mit split und eine Zeichenkette der durch Komma getrennte Tags. Dann iterieren Sie für jeden Post die Tags des Posts. Überprüfen Sie, ob sich das Tag in excluded_tags befindet, indem Sie contains verwenden, wenn es dann das Flag filtered_out anhebt, um den Post nicht anzuzeigen, das unless Kontrolle-Ablauftag verwendet.

{% 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 %} 
+0

Vielleicht ist etwas anderes hier störend, weil die Blog-Posts, die ausgeschlossen werden sollen, immer noch in der Liste erscheinen. Was ist eine Möglichkeit zu debuggen, was gefiltert wird und was nicht? –

+0

Drucken Sie aus, was in der Schleife {{% for tag in post.tags%} 'zum Debuggen vor sich geht. – jrbedard

+0

Sorry für den N00bism, aber wie mache ich das? –

Verwandte Themen