filter_options

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

Disponível para uso nas páginas: catalog | search

Esse objeto é disponibilizado apenas para lojas que possuem a nova busca ativa.

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".

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 .

AtributosCaracterí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 principaisCaracterí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

Exemplo da estrutura de retorno do objeto filter_options no layout :

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:

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

No campo name do input, deve ser adicionado o nome da opção a ser filtrada, seguida por [], além disso, no campo value, é necessário forçar o encode para que funcione corretamente, por exemplo:

  <input type="checkbox" name="categories[]" value="{{ category.key|convert_encoding('UTF-8', 'ISO-8859-1') }}"> 

É 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:

{% set category_applied = category.key in filtered_options.categories ? true : false %}
<input type="checkbox" name="categories[]" value="{{ category.key|convert_encoding('UTF-8', 'ISO-8859-1') }}" {{ category_applied ? 'checked' }}>

Last updated