Filteren op meerdere categorieën

Answered

Comments

4 comments

  • David Kortleven
    {% if all_uniq_levels contains cat %}
    {% assign included = true %}
    {% else %}
    {% assign included = false %}
    {% endif %}

    Deze code zorgt ervoor dat als er 1 van de categorieën niet in het bedrijf zit, (met name de laatste in de variable categories), "included" de waarde "false" krijgt, dus wordt hij niet geinclude. 

    Wat je dus kunt doen om het op te lossen is door deze "else" weg te halen, en aan het begin van je forloop door sorted_posts, "included" naar false te setten.

    Zoiets dus: (niet getest)

    {% for bedrijf in sorted_posts %}
    {% assign included = false %}
    {% if category.size > 0 %}
    ...
    {% for cat in categories %}

    {% if all_uniq_levels contains cat %}
    {% assign included = true %}
    {% endif %}

    {% endfor %}

    {% else %}
    {% assign included = false %}
    {% endif %}

    {% if show_all or included %}
    {% include "bedrijven/bedrijven_items", bedrijf: bedrijf %}
    {% endif %}

    {% endfor %}
    0
    Comment actions Permalink
  • Peter Vermaas

    Het werkt al wel wat beter, maar merk dat hij nog niet helemaal klopt.. Vaak moeten er meerdere soorten beveiling aangeklikt worden in de filter wil er iets tevoorschijn komen.

    0
    Comment actions Permalink
  • David Kortleven

    Al een oplossing gevonden?

    0
    Comment actions Permalink
  • Peter Vermaas

    Nee nog niet, code is nu dit misschien zie jij iets wat nog niet klopt?

    {% assign sorted_posts = site.bedrijven | sort: "title" %}

    {% assign category = request.query_object.level | split: "," %} <!--dit is category string-->
    {% assign categories = category | split: "," %} <!--Dit is de array-->

    {% if category.size == 0 %}
    {% assign show_all = true %}
    {% else %}
    {% assign show_all = false %}
    {% endif %}

    {% for bedrijf in sorted_posts %}
    {% assign all_levels = bedrijf.add_doelgroep | map: "level" %} <!--Zorgt ervoor dat alle categorien worden opgehaald-->
    {% assign all_uniq_levels = all_levels | split: "," %} <!--Zet per bedrijf alle categorieen in array-->

    {% assign included = false %}

    {% if category.size > 0 %}

    {% for cat in categories %}

    {% if all_uniq_levels contains cat %}
    {% assign included = true %}
    {% endif %}

    {% endfor %}

    {% else %}
    {% assign included = false %}
    {% endif %}

    {% if show_all or included %}
    {% include "bedrijven/bedrijven_items", bedrijf: bedrijf %}
    {% endif %}

    {% endfor %}
    0
    Comment actions Permalink

Please sign in to leave a comment.