# Funções

Funções são conjuntos de comandos já prontos que realizam determinado procedimento nos servidores Tray. Essas funções têm como objetivo facilitar e estruturar o desenvolvimento.

A utilização de funções possibilita consultar informações de Produtos, Marcas e Categorias, onde também disponibiliza utilidades como referenciar o caminho absoluto do tema além de exibir imagens e textos cadastrados no painel administrativo da Tray.

### Todas Funções Disponíveis <a href="#ir-para-funcoes-disponiveis" id="ir-para-funcoes-disponiveis"></a>

| [<mark style="color:blue;">**asset()**</mark>](/themes/construindo-seu-template/referencias/funcoes/asset.md)   | [**Image()**](/themes/construindo-seu-template/referencias/funcoes/image.md)             |
| --------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| [<mark style="color:blue;">**Brands()**</mark>](/themes/construindo-seu-template/referencias/funcoes/brands.md) | [**Products()**](/themes/construindo-seu-template/referencias/funcoes/products.md)       |
| [**Categories()**](/themes/construindo-seu-template/referencias/funcoes/categories.md)                          | [**Translation()**](/themes/construindo-seu-template/referencias/funcoes/translation.md) |

## Chamadas de Funções <a href="#ir-para-chamadas-de-funcoes" id="ir-para-chamadas-de-funcoes"></a>

Com um tema Tray podemos manipular funções de diversas maneiras, como exibir seus atributos na tela, utilizar laços de repetição e fazer validações, tudo isso de acordo com a necessidade.

Algumas funções como por exemplo `Product(), Brands()` e `Categories()` sempre retornarão um array (vetor) de dados, por isso para exibir determinada informação você deve passar seu índice dentro desse vetor. Já as funções como `Assets(), Image()` e a `Translation()`, retornam apenas informações pontuais.

Desta forma, para exibir uma posição do vetor de `products` retornadas pela função temos:

```twig
{% set products = Products() %}
  {{ products[0].id}}
```

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

```twig
{% set products = Products({
    'order': {
        'quantity_sold': 'desc',
        'name': 'asc',
        'id': 'desc'
    }
}) %}
{% for product in products %}
  {{ product.name }}
{% endfor %}
```

```twig
{% set myCategories = Categories({ "order": { "name": "asc" }}) %}
<ul>
  {% for category in myCategories %}
    <li>{{ category.name }}</li>
  {% endfor %}
</ul>
```

Além disso podemos utilizar por exemplo a função `Image()` para exibir um botão adicional cadastrado no painel como por exemplo:

```twig
{{ Image('additional_button') }}
```

Também podemos adicionar arquivos `.css`, `.js` ou até mesmo imagens utilizando a função `Asset()`

```html
<img src="{{ asset('img/my-image.png') }}" alt="">
<script src="{{ asset('js/style.js') }}"></script>
<link rel="stylesheet" href="{{ asset('css/style.css') }}">
```


---

# 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/funcoes.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.
