Snippets
Snippets são pedaços reutilizáveis de código Liquid que ajudam a manter consistência e reduzir duplicação ao longo do seu tema.
Visão Geral
- Não são visíveis no editor de tema
- Ideais para código que é repetido ao longo do seu tema
- Podem ser pensados como “componentes” ou “partials”
- Podem ser criados, deletados ou renomeados conforme necessário
Criando Snippets
Snippets são armazenados no diretório snippets/
com extensão .liquid
. Por exemplo:
<!-- snippets/course-card.liquid -->
<div class="course-card">
<img src="{{ course.thumbnail }}" alt="{{ course.name }}">
<h3>{{ course.name }}</h3>
<div class="progress-bar">
<div class="progress" style="width: {{ course.user_data.progress }}%"></div>
</div>
<p>{{ course.user_data.progress }}% completo</p>
<a href="/course/{{ course.id }}" class="button">{{ button_text | default: 'Continuar Aprendendo' }}</a>
</div>
Usando Snippets
Para incluir um snippet em uma seção ou outro snippet, use a tag render
:
{% for course_id in all_courses %}
{% assign course = all_courses[course_id] %}
{% render 'course-card', course: course, button_text: 'Ver Curso' %}
{% endfor %}
Passando Variáveis para Snippets
Você pode passar variáveis para snippets ao renderizá-los:
{% render 'course-card',
course: course,
button_text: 'Começar a Aprender',
show_progress: false
%}
Dentro do snippet, essas variáveis estão disponíveis como variáveis locais:
<div class="course-card">
<h3>{{ course.name }}</h3>
{% if show_progress %}
<div class="progress-bar">
<div class="progress" style="width: {{ course.user_data.progress }}%"></div>
</div>
{% endif %}
<a href="/course/{{ course.id }}" class="button">{{ button_text }}</a>
</div>
Valores Padrão
Você pode fornecer valores padrão para variáveis de snippet usando o filtro default
:
<a href="/course/{{ course.id }}" class="button {{ button_class | default: 'primary-button' }}">
{{ button_text | default: 'Ver Curso' }}
</a>
Casos de Uso Comuns para Snippets
Componentes de UI
- Botões
- Cards
- Elementos de navegação
- Barras de progresso
Padrões de Conteúdo
- Listagens de cursos
- Layouts de módulos
- Previews de aulas
- Exibições de informações do usuário
Exemplo: Snippet de Imagem
Um snippet para renderizar imagens consistentemente com carregamento lazy opcional:
<!-- snippets/image.liquid -->
<img
src="{{ src }}"
alt="{{ alt | escape }}"
{% if class %}class="{{ class }}"{% endif %}
{% if width %}width="{{ width }}"{% endif %}
{% if height %}height="{{ height }}"{% endif %}
{% if lazy_load %}loading="lazy"{% endif %}
/>
Uso:
{% render 'image',
src: product.image,
alt: product.title,
class: 'rounded shadow',
width: 300,
height: 200,
lazy_load: true
%}
Melhores Práticas
- Crie snippets para componentes usados em múltiplos lugares
- Passe variáveis para snippets para flexibilidade
- Use convenções de nomenclatura consistentes
- Mantenha snippets focados em uma única responsabilidade
- Documente as variáveis esperadas para cada snippet
- Use valores padrão para parâmetros opcionais