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 .

Outras chaves utilizadas para o filtro:

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