Visión general
Estructura del layout
El archivo principal del tema es
layouts/layout.tpl.
Carga assets, componentes y sub-templates, e imprime variables globales para cada
página.

Títulos y descripciones de página
Variables globales como
page_title y page_description ya vienen
completas según el template actual y pueden renderizarse directamente:
<title>{{ page_title }}</title>
<meta name="description" content="{{ page_description }}">
Cargando assets con static_url
Usa el filtro
static_url para apuntar a archivos en la carpeta
static
(SCSS, CSS y JS). La plataforma resuelve la URL final:
<link rel="stylesheet" href="{{ 'css/style-critical.scss' | static_url }}">
<script src="{{ 'js/main.js' | static_url }}" defer></script>
SCSS soportado
Tiendanube compila SCSS automáticamente y lo sirve como CSS. Ejemplo de salida de una stylesheet:
//dcdn-us.mitiendanube.com/stores/002/166/951/themes/recife/dart-style-critical-61d41e81661b0f6eec2e689d7616b137.css
Componentes de la plataforma
Algunos recursos se proveen como componentes que no están en el FTP, pero pueden incluirse
vía
component() pasando parámetros:
{{ component('social-meta') }}
{{ component('fonts', {
font_weights: '400,600',
font_settings: 'settings.font_headings, settings.font_rest'
}) }}
Modelos antiguos
En temas más antiguos, las fuentes se cargaban con
google_fonts_url y 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
Usa
{% include %} para insertar el contenido de otro .tpl dentro
del actual.
Ejemplo común: inyectar tokens CSS dentro de <style>:
<style>
{% include "static/css/style-tokens.tpl" %}
</style>

Comentarios y variables (set)
Los comentarios de TWIG no se renderizan en el HTML final:
{# seu comentário #}
Asigna valores con {% set %} y reutilízalos luego:
{% set variavel_string = 'MINHA STRING' %}
{% set variavel_numerica = 100 %}
{% set variavel_booleana = true %}
Ejemplo de condicional por template
La variable global
template indica la página actual (ej.: home,
product, category, search, page,
account.login, etc.). Es común condicionar bloques con ella y con valores de
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 globales
fb_js y pin_js son variables globales
utilitarias provistas por la plataforma para Facebook y Pinterest.