mcpField
S
shopify

shopify

github.com/mindrally开发288728 次安装3 周前更新
代码仓库

关于 shopify

面向主题开发者的 Shopify 主题开发技能,使用 Liquid 和 Online Store 2.0。内容包括模块化区块、主题 JavaScript 与样式、性能、无障碍、设置、元字段和测试。

主要功能

  1. 01Liquid 模板与可复用片段
  2. 02Online Store 2.0 区块与 JSON 模板
  3. 03主题 JavaScript 与购物车模式
  4. 04响应式 CSS 与性能实践
  5. 05无障碍、设置与元字段
  6. 06主题测试与验证

适用场景

  1. 01构建模块化 Shopify 主题区块
  2. 02创建商家可自定义的灵活页面布局
  3. 03实现响应式店面与购物车行为
  4. 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