关于 shopify
面向主题开发者的 Shopify 主题开发技能,使用 Liquid 和 Online Store 2.0。内容包括模块化区块、主题 JavaScript 与样式、性能、无障碍、设置、元字段和测试。
主要功能
- 01Liquid 模板与可复用片段
- 02Online Store 2.0 区块与 JSON 模板
- 03主题 JavaScript 与购物车模式
- 04响应式 CSS 与性能实践
- 05无障碍、设置与元字段
- 06主题测试与验证
适用场景
- 01构建模块化 Shopify 主题区块
- 02创建商家可自定义的灵活页面布局
- 03实现响应式店面与购物车行为
- 04检查主题的无障碍与性能
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill shopify安装后在 Claude Code 中输入/shopify确认已加载。
详细介绍
Shopify 主题开发
你是 Shopify 主题开发、Liquid 模板、Online Store 2.0 和电子商务最佳实践方面的专家。
核心原则
- 编写简洁、易于维护的 Liquid 代码
- 遵循 Online Store 2.0 架构模式
- 优化性能和 Core Web Vitals
- 确保符合无障碍标准
- 实现响应式、移动端优先的设计
Liquid 模板
最佳实践
- 使用含义明确的变量名
- 有效利用 Liquid 过滤器
- 尽量减少模板中的逻辑;使用代码片段实现可复用代码
- 使用
{% cache %}块缓存开销较大的操作 - 使用
{% render %}代替已弃用的{% include %}
常见模式
{% comment %} Product card snippet {% endcomment %}
{% render 'product-card', product: product, show_vendor: true %}
{% comment %} Conditional rendering {% endcomment %}
{% if product.available %}
<button type="submit">Add to Cart</button>
{% else %}
<button disabled>Sold Out</button>
{% endif %}
{% comment %} Loop with forloop object {% endcomment %}
{% for product in collection.products limit: 12 %}
{% render 'product-card', product: product %}
{% endfor %}
Online Store 2.0
Section 架构
- 创建模块化、可复用的 section
- 使用适当的设置定义 section schema
- 使用 blocks 在 section 中呈现可重复的内容
- 实现 section groups,提升模板灵活性
Section Schema
{% schema %}
{
"name": "Featured Collection",
"settings": [
{
"type": "collection",
"id": "collection",
"label": "Collection"
},
{
"type": "range",
"id": "products_to_show",
"min": 2,
"max": 12,
"step": 2,
"default": 4,
"label": "Products to show"
}
],
"presets": [
{
"name": "Featured Collection"
}
]
}
{% endschema %}
JSON 模板
- 使用 JSON 模板创建灵活的页面布局
- 以 JSON 格式定义模板 section
- 允许商家通过主题编辑器进行自定义
JavaScript 最佳实践
主题 JavaScript
- 使用现代 ES6+ 语法
- 实现适当的事件委托
- 延迟加载非关键脚本
- 使用 Shopify 的 Section Rendering API 实现动态更新
购物车功能
// Add to cart with Fetch API
async function addToCart(variantId, quantity = 1) {
const response = await fetch('/cart/add.js', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
id: variantId,
quantity: quantity,
}),
});
return response.json();
}
CSS 和样式
- 使用 CSS 自定义属性进行主题设置
- 实现移动端优先的响应式设计
- 使用 CSS Grid 和 Flexbox 布局
- 尽量减少阻塞渲染的 CSS
- 使用逻辑属性以支持国际化
性能优化
- 使用 Shopify 图片 CDN 优化图片
- 为图片和 section 实现延迟加载
- 尽量减少 Liquid 循环和复杂计算
- 使用
preload预加载关键资源 - 监控 Core Web Vitals(LCP、FID、CLS)
图片优化
{{ product.featured_image | image_url: width: 800 | image_tag:
loading: 'lazy',
widths: '200, 400, 600, 800',
sizes: '(max-width: 600px) 100vw, 50vw'
}}
无障碍
- 使用语义化 HTML 元素
- 添加适当的 ARIA 属性
- 确保支持键盘导航
- 保持足够的色彩对比度
- 使用屏幕阅读器进行测试
主题设置
- 在 settings_schema.json 中按逻辑组织设置
- 提供合理的默认值
- 使用适当的设置类型
- 为商家提供有用的信息文本
元字段
- 使用元字段存储自定义商品数据
- 在模板中高效访问元字段
- 在主题中定义元字段定义
测试
- 在不同浏览器和设备上进行测试
- 验证 Liquid 语法
- 检查是否符合无障碍标准
- 监控性能指标
- 全面测试结账流程
文件结构
theme/
├── assets/
├── config/
│ ├── settings_data.json
│ └── settings_schema.json
├── layout/
│ └── theme.liquid
├── locales/
├── sections/
├── snippets/
└── templates/
├── customers/
└── *.json
评论
支持 Markdown