Estrutura do layout
O arquivo principal do tema é o
layouts/layout.tpl
.
Ele carrega assets, componentes e sub-templates, e imprime variáveis globais para cada
página.

Títulos e descrições de página
Variáveis globais como
page_title
e page_description
já vêm
preenchidas
conforme o template atual e podem ser renderizadas diretamente:
<title>{{ page_title }}</title>
<meta name="description" content="{{ page_description }}">
Carregando assets com static_url
Use o filtro
static_url
para apontar para arquivos na pasta
static
(SCSS, CSS e JS). A plataforma resolve a URL final:
<link rel="stylesheet" href="{{ 'css/style-critical.scss' | static_url }}">
<script src="{{ 'js/main.js' | static_url }}" defer></script>
SCSS suportado
A Nuvemshop compila SCSS automaticamente e serve como CSS. Exemplo de saída de uma stylesheet:
//dcdn-us.mitiendanube.com/stores/002/166/951/themes/recife/dart-style-critical-61d41e81661b0f6eec2e689d7616b137.css
Componentes de plataforma
Alguns recursos são fornecidos como componentes que não ficam no FTP, mas podem ser
incluídos via
component()
passando parâmetros:
{{ component('social-meta') }}
{{ component('fonts', {
font_weights: '400,600',
font_settings: 'settings.font_headings, settings.font_rest'
}) }}
Modelos antigos
Em temas mais antigos, as fontes eram carregadas com
google_fonts_url
e params.preview
:
{% if params.preview %}
@import url('https://fonts.googleapis.com/css?family=Montserrat:400,500,600,700,800|Muli:400,700');
{% else %}
@import url("{{ [settings.font_headings, settings.font_rest] | google_fonts_url('400,500,600,700,800') | raw }}");
{% endif %}
Include de sub-templates
Use
{% include %}
para inserir o conteúdo de outro .tpl
dentro
do atual.
Exemplo comum: injetar tokens CSS dentro de <style>
:
<style>
{% include "static/css/style-tokens.tpl" %}
</style>

Comentários e variáveis (set)
Comentários TWIG não são renderizados no HTML final:
{# seu comentário #}
Atribua valores com {% set %}
e reutilize depois:
{% set variavel_string = 'MINHA STRING' %}
{% set variavel_numerica = 100 %}
{% set variavel_booleana = true %}

Exemplo de condicional por template
A variável global
template
indica a página atual (ex.: home
,
product
, category
, search
, page
,
account.login
, etc.). É comum condicionar blocos com ela e com valores do
settings
:
{% if template == 'product' %}
{% if settings.show_product_fb_comment_box %}
{{ fb_js }}
<div id="fb-root"></div>
{# caixa de comentários do Facebook aqui #}
{% endif %}
{% endif %}
Scripts globais
fb_js
e pin_js
são variáveis globais
utilitárias
fornecidas pela plataforma para Facebook e Pinterest.