Layouts

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.