> For the complete documentation index, see [llms.txt](https://partners.tray.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/filter_options.md).

# 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)
