# filter\_options

O Objeto `filter_options` retorna um array com filtros que dá a possibilidade de montar filtros laterais na loja.

{% hint style="warning" %}
**Disponível para uso nas páginas:** catalog | search
{% endhint %}

{% hint style="info" %}
**Esse objeto é disponibilizado apenas para lojas que possuem a nova busca ativa.**
{% endhint %}

&#x20;`filtered_options` - é  o objeto responsável por retornar todos os filtros que estiverem aplicados na busca atual. Portanto pode ser utilizado para definir inputs com "`checked`".

&#x20;`filter_options` - este objeto retorna todos os filtros independente deles estarem aplicados ou não.

### Atributos disponíveis

A tabela abaixo lista os atributos que podem ser utilizados para os objetos `filter_options` ou `filtered_options` .

| Atributos                           | Característica                                                                                                                                                                                                                                            |
| ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{{ brands }}`                      | Array que contem todas as marcas da listagem de produtos. Cada marca obtida é um outro Array com duas keys: `key` \| `doc_count`                                                                                                                          |
| `{{ brands.key }}`                  | Nome da Marca existente na listagem de produtos.                                                                                                                                                                                                          |
| `{{ doc_count }}`                   | Quantidade de produtos com a marca.                                                                                                                                                                                                                       |
| `{{ categories }}`                  | Array com todas as categorias da listagem de produtos. Cada categoria obtida é um outro Array com duas keys: `doc_count` \| `key`                                                                                                                         |
| `{{ categories[0].key }}`           | Nome da Categoria, de índice definido entre colchetes "\[]", ou pode ser iterado dentro do array `categories` cada elemento com o atributo `key` para obter o nome de todas categorias da listagem de produtos.                                           |
| {{ `categories[0].doc_count }}`     | Quantidade de produtos da Categoria, de índice definido entre colchetes "\[]", ou pode ser iterado dentro do array `categories` cada elemento com o atributo `doc_count` para obter a quantidade de produtos de todas categorias da listagem de produtos. |
| `{{ availability }}`                | Array com todos tipos de disponibilidade possíveis para a listagem de produtos. De cada item desse array pode ser consultado: `key` \| `doc_count`                                                                                                        |
| `{{ availability.key }}`            | Tipo de disponibilidade existente na listagem.                                                                                                                                                                                                            |
| `{{ doc_count }}`                   | Quantidade de produtos por disponibilidade existentes na listagem.                                                                                                                                                                                        |
| `{{ prices }}`                      | Array que contem duas listas de preços com informações e faixas de variação: `stats` \| `buckets`                                                                                                                                                         |
| `{{ prices.stats }}`                | Array com informações de valores gerais dos preços. Quando iterado exibe os valores na mesma ordem das suas Keys: `count` \| `min` \| `max` \| `avg` \| `sum`                                                                                             |
| `{{ prices.stats.count }}`          | A quantidade de preços de produtos existentes na listagem.                                                                                                                                                                                                |
| {`{ prices.stats.min }}`            | O menor preço na listagem de produtos.                                                                                                                                                                                                                    |
| `{{ prices.stats.max }}`            | O maior preço na listagem de produtos.                                                                                                                                                                                                                    |
| `{{ prices.stats.avg }}`            | Calcula e exibe a média de preço da listagem de produtos.                                                                                                                                                                                                 |
| `{{ prices.stats.sum }}`            | Soma de todos os preços da listagem de produtos.                                                                                                                                                                                                          |
| `{{ prices.buckets }}`              | Array com todas faixas de preço calculadas pela listagem de produtos. Cada faixa obtida é um outro Array com duas keys: `to` \| `from`                                                                                                                    |
| `{{ prices.buckets[0].from }}`      | Valor **inicial** da faixa de preço do índice definido entre colchetes "\[]", ou pode ser iterado dentro do array `buckets` cada elemento com o atributo `from` para obter o valor inicial de todas faixas de preço da página atual.                      |
| `{{ prices.buckets[0].to }}`        | Valor **final** da faixa de preço do índice definido entre colchetes "\[]", ou pode ser iterado dentro do array `buckets` cada elemento com o atributo `to` para obter o valor final de todas faixas de preço da página atual.                            |
| `{{ properties }}`                  | Array com todas características dos produtos da listagem. É possível imprimir o nome de cada característica obtida com o atributo `key`. E dentro de cada característica existe outro Array "`values`" com detalhes.                                      |
| `{{ properties.values}}`            | Array com todos os detalhes das características. Cada detalhe possui dois atributos: `key` \| `doc_count`                                                                                                                                                 |
| `{{ properties.values.doc_count }}` | Quantidade de produtos para o detalhe da característica.                                                                                                                                                                                                  |
| `{{ properties.values.key }}`       | Nome do detalhe da característica.                                                                                                                                                                                                                        |
| `{{ properties.values.entity }}`    | O tipo da Característica, se é uma "Variação" ou "Propriedade".                                                                                                                                                                                           |

### Outras chaves utilizadas para o filtro:

| Chaves principais | Característica                                      |
| ----------------- | --------------------------------------------------- |
| `{{ store.id }}`  | id da loja                                          |
| `company`         | Plataforma de Origem da Loja                        |
| `page`            | Página atual da listagem de produtos                |
| `q`               | Query String buscada através do formulário de busca |
| `brand`           | Lista de Marcas adicionadas ao filtro               |
| `sort`            | Ordenação atual da página                           |
| `size`            | Quantidade de produtos retornados na busca          |
| `category_id`     | Id da categoria atual                               |

&#x20;Exemplo da estrutura de retorno do objeto `filter_options` no layout :

```php
Array
(
    [brands] => Array
    (
        [0] => Array
        (
            [key] => marca
            [doc_count] => 2
        )

        [1] => Array
        (
            [key] => teste
            [doc_count] => 1
        )

    )

    [categories] => Array
    (
        [0] => Array
        (
            [doc_count] => 9
            [key] => Blusas
        )

        [1] => Array
        (
            [doc_count] => 1
            [key] => Categoria 6
        )

        [2] => Array
        (
            [doc_count] => 1
            [key] => Categoria1
        )

        [3] => Array
        (
            [doc_count] => 1
            [key] => Categoria2
        )

        [4] => Array
        (
            [doc_count] => 1
            [key] => Categoria3
        )

        [5] => Array
        (
            [doc_count] => 1
            [key] => Categoria4
        )

        [6] => Array
        (
            [doc_count] => 1
            [key] => Categoria5
        )

    )

    [availability] => Array
    (
        [0] => Array
        (
            [key] => Disponível em 1 dia útil
            [doc_count] => 1
        )

        [1] => Array
        (
            [key] => Disponível em 9 dias úteis
            [doc_count] => 1
        ) 

    )

    [prices] => Array
    (
        [stats] => Array
        (
            [count] => 9
            [min] => 49.99
            [max] => 300
            [avg] => 116.66555555556
            [sum] => 1049.99
        )

        [buckets] => Array
        (
            [0] => Array
            (
                [from] => 49.99
                [to] => 77.99
            )

            [1] => Array
            (
                [from] => 78
                [to] => 105.99
            )

            [2] => Array
            (
                [from] => 106
                [to] => 133.99
            )

            [3] => Array
            (
                [from] => 134
                [to] => 161.99
            )

            [4] => Array
            (
                [from] => 162
                [to] => 189.99
            )

            [5] => Array
            (
                [from] => 190
                [to] => 217.99
            )

            [6] => Array
            (
                [from] => 218
                [to] => 245.99
            )

            [7] => Array
            (
                [from] => 246
                [to] => 273.99
            )

            [8] => Array
            (
                [from] => 274
                [to] => 300
            )

        )

    )

    [properties] => Array
    (
        [doc_count] => 4
        [values] => Array
        (
            [0] => Array
            (
                [doc_count] => 4
                [key] => Cor
                [values] => Array
                (
                    [0] => Array
                    (
                        [doc_count] => 1
                        [key] => Água
                        [entity] => variants
                    )

                    [1] => Array
                    (
                        [doc_count] => 1
                        [key] => Amarelo
                        [entity] => variants
                    )

                    [2] => Array
                    (
                        [doc_count] => 1
                        [key] => Azul
                        [entity] => variants
                    )

                    [3] => Array
                    (
                        [doc_count] => 1
                        [key] => Azul aço
                        [entity] => variants
                    )

                )

            )

            [1] => Array
            (
                [doc_count] => 1
                [key] => Gênero
                [values] => Array
                (
                    [0] => Array
                    (
                        [doc_count] => 1
                        [key] => Femino
                        [entity] => properties
                    )

                )

            )

        )

    )

)
```

## Como Usar

Para aplicação no layout é necessário se atentar a alguns pontos detalhados abaixo.

Inicialmente é necessário que o filtro seja montado dentro de um formulário de método `get`, por exemplo:

{% code title="exemploInicial.html" %}

```html
 <form class="filter__form" method="get"><!-- Insira o filtro aqui --></form>
```

{% endcode %}

No campo `name` do input, deve ser adicionado o nome da opção a ser filtrada, seguida por `[]`, por  exemplo:

```php
  <input type="checkbox" name="categories[]" value="{{ category.key }}"> 
```

É através do objeto `filtered_options` que deve ser verificado se um determinado filtro está aplicado, e então marcado como `checked`, para isso é necessário realizar uma validação, exemplo: &#x20;

```php
{% set category_applied = category.key in filtered_options.categories ? true : false %}
<input type="checkbox" name="categories[]" value="{{ category.key }}" {{ category_applied ? 'checked' }}>
```

#### [Componente exemplo de Filtro](/themes/construindo-seu-template/referencias/componentes/novo-filtro-inteligente.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/filter_options.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
