Startseite > Template- und Themeprogrammierung > Shop-Objekte > filter

filter

Das <obj>filter</obj> Objekt enthält die verschiedenen Ausprägungen eines  bestimmten <obj>product</obj> oder <obj>content</obj> Attributs.

Verfügbarkeit in Templates

In folgenden Templates steht das <obj>filter</obj> Objekt zur Verfügung.

Attribute

Die verfügbaren Attribute der Elemente des <obj>filters</obj> Objekt unterscheiden sich je nach Filter-Typ. Wählen Sie daher nachfolgend den gewüschten Filter-Typ aus.

Attribute eines Elements des <obj>filters</obj> Objektes für den folgenden Filter-Typ anzeigen:

filter.id

Gibt die eindeutige numerische ID des Filters zurück.

filter.origin

Gibt den Namen des Feldes zurück, auf der sich der Filter bezieht.

filter.type

Gibt den Typ des Filters zurück. Dieses Attribute kann folgende Werte besitzen:

  • <liquid>term</liquid>
  • <liquid>range</liquid>

filter.is_active

Gibt <liquid>true</liquid> zurück, falls ein Filter-Value aktiv ist, also <liquid>filter.values[n].is_active</liquid> den Werte <liquid>true</liquid> besitzt.

filter.is_multi_select

Gibt true zurück, falls eine Mehrfachauswahl von Filter-Values angeboten werden soll.

filter.values

Gibt eine Liste mit Filter-Values zurück. Die verfügbaren Attribute innerhalb der Liste sind nachfolgend im Schema von <obj>filter.values[n]</obj> dokumentiert.

<liquid-input>
{% for value in filter.values %}
   <a href="{{ value | filter_value_url }}">{{ filter.value }}</a>
{% endfor %}
</liquid-input>
<liquid-output>
<a href="/search/?f.1.filter.term=red">red</a>
<a href="/search/?f.1.filter.term=green">green</a>
<a href="/search/?f.1.filter.term=blue">blue</a>
</liquid-output>

filter.values

Gibt eine Liste mit Filter-Values zurück. Die verfügbaren Attribute innerhalb der Liste sind nachfolgend im Schema von <obj>filter.values[n]</obj> dokumentiert

<liquid-input>
{% for value in filter.values %}
   <a href="{{ value | filter_value_url }}">{{ filter.value }}</a>
{% endfor %}
</liquid-input>
<liquid-output>
<a href="/search/?f.1.filter.range=0-100">0-100</a>
<a href="/search/?f.1.filter.range=100-500">100-500</a>
<a href="/search/?f.1.filter.range=500-1000">500-1000</a>
</liquid-output>

filter.values[n].value

Gibt den Wert des Feldes <liquid>filter.origin</liquid> zurück, auf den gefiltert werden soll. Falls es sich bei <liquid>filter.origin</liquid> um ein Enumeratoren-Feld handelt, enthält dieses Attribut <obj>enum.value</obj>.

filter.values[n].value

Gibt den Bereich des Feldes <obj>filter.origin</obj> zurück, auf den gefiltert werden soll. Dies entspricht <obj>filter.values[n].from</obj>-<obj>filter.values[n].to</obj>.

<liquid-input>
{% for filterValue in filter.values %}
  {{ filterValue.value }}
{% endfor %}
</liquid-input>
<liquid-output>
0-100
100-500
500-1000
</liquid-output>

filter.values[n].is_active

Gibt <liquid>true</liquid> zurück, falls dieser Filter-Value aktiv ist.

filter.values[n].item_count

Gibt die Anzahl der Produkt- bzw. Content-Treffer für diesen Filter-Value zurück.

filter.values[n].id

Gibt <obj>enum.id</obj> des Filter-Value zurück. Nur verfügbar, falls es sich bei <liquid>filter.origin</liquid> um ein Enumeratoren-Feld handelt.

filter.values[n].name

Gibt <obj>enum.name</obj> des Filter-Value zurück. Nur verfügbar, falls es sich bei <liquid>filter.origin</liquid> um ein Enumeratoren-Feld handelt.

filter.values[n].src

Gibt <obj>enum.src</obj> des Filter-Value zurück. Nur verfügbar, falls es sich bei <liquid>filter.origin</liquid> um ein Enumeratoren-Feld handelt.

filter.values[n]._string1

Gibt <obj>enum._string1</obj> des Filter-Value zurück. Nur verfügbar, falls es sich bei <liquid>filter.origin</liquid> um ein Enumeratoren-Feld handelt.

filter.values[n]._string2

Gibt <obj>enum._string2</obj> des Filter-Value zurück. Nur verfügbar, falls es sich bei <liquid>filter.origin</liquid> um ein Enumeratoren-Feld handelt.

filter.values[n]._integer1

Gibt <obj>enum._integer1</obj> des Filter-Value zurück. Nur verfügbar, falls es sich bei <liquid>filter.origin</liquid> um ein Enumeratoren-Feld handelt.

filter.values[n]._integer2

Gibt <obj>enum._integer2</obj> des Filter-Value zurück. Nur verfügbar, falls es sich bei <liquid>filter.origin</liquid> um ein Enumeratoren-Feld handelt.

filter.values[n].from

Gibt den Start des Filter-Bereichs des Filter-Value zurück, falls <liquid>filter.type == "range"</liquid>

filter.values[n].to

Gibt das Ende des Filter-Bereichs des Filter-Value zurück, falls <liquid>filter.type == "range"</liquid>

filter.statistics

Gibt statistische Informationen über diesen Filter zurück, falls <liquid>filter.type == "range"</liquid>. Folgende Attribute werden zurückgegeben:

  • <obj>min</obj> - gibt den minimalen vorhandenen Wert des Feldes <obj>filter.origin</obj> zurück
  • <obj>max</obj> - gibt den maximalen vorhandenen Wert des Feldes <obj>filter.origin</obj> zurück

Diese Information kann z.B. für einen Preis-Slider verwendet werden, um dessen Grenzwerte abzubilden.

filter.attribute_set_id

Gibt die Attribute-Set-ID zurück, falls es sich bei <obj>filter.origin</obj> um ein Attribute-Set-Feld handelt. 

filter.is_fixed

Gibt <liquid>true</liquid> zurück, falls man sich gerade auf einer Such-Alias-Seite befindet und dieser Filter dort verwendet wird. In diesem Fall führt die Abwahl des aktiven Filter-Values bzw. eine zusätzliche Auswahl eines Filter-Values dazu, dass die Such-Alias-Seite verlassen wird.

Beispiel für ein Term-Filter

Dieses Beispiel zeigt einen Filter mit dem <obj>filter.type</obj> "term" auf dem Feld color_enum. Dabei stehen die drei Filter-Options "red", "green" und "blue" zur Verfügung.

{
  "id": 2,
  "type": "term",
  "origin": "color_enum",
  "is_multi_select": true,
  "is_active": true,
  "values" : [
    {
      "name": "Red",
      "value": "#FF0000",
      "is_active": true,
      "count": 20,
      "id": 101,
      "src": "red.png"
    },{
     "name": "Green",
     "value": "#00FF00",
     "count": 15,
     "id": 102,
     "src": "green.png"
    },{
     "name": "Blue",
     "value": "#0000FF",
     "count": 1,
     "id": 103,
     "src": "blue.png"
   }
 ]
}

Beispiel für ein Bereichs-Filter

Dieses Beispiel zeigt einen Filter mit dem <obj>filter.type</obj> "range" auf dem Feld price.

{
  "id": 3,
  "type": "range",
  "origin": "price",
  "is_multi_select": false,
  "options" : [
    {
      "value": "0-100",
      "count": 150,
      "from": 0,
      "to": 100
    },{
     "value": "100-200",
     "count": 210,
     "from": 100,
     "to": 200
    }
  ],
  "statistics":{
    "min": 5.44,
    "max": 198.94
  }
}