# Objetos

Objetos são estruturas de dados utilizadas para facilitar a manipulação de determinadas informações da plataforma Tray.

### Todos Objetos Disponíveis <a href="#ir-para-objetos-disponiveis" id="ir-para-objetos-disponiveis"></a>

| [**banner**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/banner)                  | [**products**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/products)               |
| ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| [**breadcrumb**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/breadcrumb)          | [**productFeatured**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/productfeatured) |
| [**category**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/category)              | [**seals**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/seals)                     |
| [**categories**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/categories)          | [**search**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/search)                   |
| [**filters**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/filters)                | [**settings**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/settings)               |
| [**filter\_options**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/filter_options) | [**store**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/store)                     |
| [**links**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/links)                    | [**tags**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/tags)                       |
| [**pages**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/pages)                    | [**tray**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/tray)                       |
| [**paginate**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/paginate)              | [**themePath**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/themepath)             |
| [**payamentMethods**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/paymentmethods) | [**utils**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/utils)                     |
| [**product**](https://partners.tray.com.br/themes/construindo-seu-template/referencias/objetos/product)                |                                                                                                                         |

## Manipulando Objetos

Podemos manipular objetos de diversas maneiras de acordo com a necessidade como:

* Exibir seus atributos na tela
* Utilizar laços de repetição
* Fazer validações

Alguns objetos trazem informações em um array. Por isso, para utilizá-las é necessário passar a posição que o elemento desejado se encontra dentro do array ou utilizar um loop para percorrer todos elementos e tratá-los como for preciso.

### Tratando Objetos Array com índice

O objeto **`products`** por exemplo, sempre retornará um array de dados, por isso para exibir apenas um produto com este objeto é preciso passar seu índice entre colchetes "**`[ ]`**".

Desta forma, para exibir uma posição do vetor de `products` e de `categories` temos:

```twig
{{ products[0].id}}
```

```twig
{{ categories[0].name}}
```

### Tratando Objetos Array com laço de repetição

Podemos também exibir todos os produtos ou todas as categorias utilizando um laço `for`.

```twig
{% for product in products %}
    {{ product.name }}
{% endfor %}
```

```twig
{% for category in categories %}
    {{ category.name }}
{% endfor %}
```

### Tratando Objetos Array com condicional

Ou podemos exibir na tela somente os que tiverem o atributo igual a determinado valor, para isso podemos fazer uma comparação na exibição de produto utilizando o `if` como o código abaixo.

```twig
 {% for product in products %}
    {% if product.id == '2' %}
       {{ product.id }}
    {% endif %}
 {% endfor %}
```

Com o `if` também podemos verificar se o objeto em questão, no caso do exemplo abaixo é verificado para cada item do objeto `categories` se contém uma imagem, caso tenha ela é exibida na tela.

```twig
{% for category in categories %}
   {% if category.images %}                     
   <img src="{{ category.images[0] }}" alt="{{ category.name }}">            
   {% endif %}      
{% endfor %}
```
