mcpField
P
product-page-design

product-page-design

github.com/finsilabs设计与 UI60218 次安装6 天前更新
代码仓库

关于 product-page-design

product-page-design 是面向电商设计与开发者的技能,指导创建和优化产品详情页。内容涵盖主流店铺平台配置及自定义页面的布局、组件和转化相关实践。

主要功能

  1. 01产品图库与缩放设计
  2. 02多属性变体选择器
  3. 03数量与加入购物车控件
  4. 04评价及库存提示
  5. 05响应式与平台适配建议

适用场景

  1. 01从零构建店铺产品详情页
  2. 02优化现有页面的加入购物车转化
  3. 03为颜色和尺码选项实现变体选择
  4. 04加入评价、评分与库存信息

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill product-page-design

安装后在 Claude Code 中输入/product-page-design确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

tile.json
evals/image-gallery-accessibility-and-performa/
criteria.json
task.md
evals/social-proof-seo-structured-data-image-o/
criteria.json
task.md
evals/variant-selector-layout-and-sticky-atc/
criteria.json
task.md

详细介绍

产品页设计

概述

构建高转化率的产品详情页(PDP),包含可缩放的图片图库、变体选择器(尺寸、颜色、材质)、数量控件和社交证明元素。本技能涵盖响应式布局模式、特定平台的自定义设置,以及有助于提升转化率的组件选择——从首屏主视觉区到移动端的固定式加入购物车栏。

何时使用此技能

  • 从头开始为新网店构建产品详情页时
  • 优化现有 PDP,以提高加入购物车的转化率时
  • 实现可处理多种选项类型(尺寸 + 颜色)的变体选择器时
  • 添加支持缩放、缩略图和滑动操作的图片图库时
  • 集成评论、评分和库存提示等社交证明元素时

核心说明

第 1 步:确定商家的平台并选择合适的方案
平台推荐方案原因
Shopify使用 OS2.0 主题(Dawn、Sense、Craft),并通过 Theme Editor 进行自定义;使用应用扩展评论功能(Judge.me、Loox)和变体展示Dawn 的产品模板开箱即用地支持图库、变体和加入购物车功能;商家可通过 Theme Editor 配置布局,无需编写代码
WooCommerce使用 WooCommerce 内置产品页,搭配支持良好的主题(Astra、Kadence、Flatsome)和 Storefront Customizer;使用 YITH、WooCommerce Product Add-Ons 和 WP Review 插件扩展WooCommerce 原生提供图库、变体(属性 + 规格)和购物车按钮;布局质量取决于主题选择
BigCommerce通过 Theme Editor 自定义 Cornerstone 主题的产品页;使用 BigCommerce 内置评论系统,并通过 Shogun 扩展高级布局控制功能Cornerstone 涵盖所有核心 PDP 组件;BigCommerce 的 Theme Editor 提供布局选项,无需编写代码
Custom / Headless构建双栏网格布局,包含图库组件、变体选择器、固定式加入购物车栏和用于 SEO 的结构化数据可全面控制每个组件和交互;请参阅下方模式
第 2 步:配置 PDP 布局和组件

Shopify

布局配置(主题编辑器):

  1. 前往 Online Store → Themes → Customize
  2. 导航至 Products → Default product 模板
  3. 配置 Product information 部分:
    • 如果销售多件装商品,请启用 Quantity selector
    • 在 Add to Cart 下方启用 Payment button(Buy it now / Shop Pay 快速结账)
    • 设置 Variant selector style:选项较多时使用下拉菜单,尺寸/颜色选项使用按钮
  4. 在 Product media 部分,将 Media size 设为 Large 或 Extra Large,以获得更好的缩放质量
  5. 如果主题支持,请启用 Sticky header 选项,以便滚动时始终显示 Add to Cart

添加评价(最重要的社交证明元素):

  • 从 Shopify App Store 安装 Judge.me Product Reviews(免费套餐——评价数量不限,支持图片评价)
  • 或安装 Loox(支持图片/视频评价和推荐计划,价格从每月 $9.99 起)
  • 这两款应用都会在商品标题下方添加评价星级,并在页面底部添加完整的评价版块,无需更改主题代码

优化视觉类商品的选项选择器(颜色/尺寸):

  • 安装 Variant Image Selector,或使用内置色板支持的主题(Prestige、Impulse、Flex)
  • 在 Dawn 中:前往 Theme settings → Variant pills 并启用该选项,用可点击按钮替代下拉菜单
  • 对于带图片的颜色色板:使用 Variant Image 功能为每种颜色选项指定不同图片;图片库会自动切换

库存紧迫感指示器:

  • 安装 Urgency Bear 或 Hurrify 应用,添加“仅剩 X 件”徽章——这些应用会读取 Shopify 的实际库存,而非虚假数字
  • 或在 Products → [product] → Inventory 中配置库存阈值,并启用主题内置的低库存通知

WooCommerce

布局配置:

  1. 前往 WooCommerce → Settings → Products → Display
  2. 将 Product images 尺寸设为 Large(至少 600×600px),以获得更好的缩放效果
  3. 在 WooCommerce 设置中启用 Product gallery zoom,以激活悬停缩放

主题级布局:

  • Astra:前往 Appearance → Customize → WooCommerce → Product Page,配置单列或双列布局、图片库位置以及固定的 Add to Cart
  • Flatsome:使用内置的拖放式 UX Builder 重新排列商品详情页(PDP)版块;Flatsome 内置固定的 Add to Cart 和色板选择器
  • Kadence:在 Kadence → WooCommerce 设置中启用固定的 Add to Cart,设置图片库布局(垂直缩略图、水平缩略图条),并配置评价星级的位置

添加评价:

  • 安装 WooCommerce Product Reviews Pro(WooCommerce.com,$79/年),以支持图片评价、评价提醒和有用投票
  • 或使用 Customer Reviews for WooCommerce(免费),它可与 Trustpilot 和 Google Shopping 集成

选项选择器(颜色色板、尺寸按钮):

  • 安装 Variation Swatches for WooCommerce(免费,WordPress.org)——将属性下拉菜单转换为可视化色板(颜色、图片或按钮样式)
  • 在 Products → Attributes → [attribute] → Swatch type 中配置每个属性的色板类型
BigCommerce

布局配置(Cornerstone 主题):

  1. 前往 Storefront → My Themes → Customize
  2. 在 Product Page 下,配置:
    • Image layout:Carousel、Thumbnail strip vertical 或 Thumbnail strip horizontal
    • Gallery zoom:启用悬停缩放
    • Product options 显示方式:根据选项类型选择 Dropdown 或 Swatch buttons
  3. 如果主题版本支持,请启用 Sticky Add to Cart(Cornerstone 6+)

评论:

  1. 前往 Storefront → Product Reviews,启用内置评论系统
  2. 设置评论的最小长度,以及评论发布前是否需要审核
  3. 如需高级评论功能(照片评论、问答、评论邮件),请从 BigCommerce App Marketplace 安装 PowerReviews 或 Yotpo

社交证明应用:

  • 除 Shopify 外,BigCommerce 也提供 Judge.me 和 Loox

自定义 / 无头架构

双栏响应式 PDP 布局:

.pdp-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  max-width: 1280px;
  margin: 0 auto;
  padding: 2rem;
}

@media (max-width: 768px) {
  .pdp-grid { grid-template-columns: 1fr; }
}

/* Gallery sticks while scrolling through product info on desktop */
.pdp-gallery { position: sticky; top: 2rem; align-self: start; }

带库存情况跟踪的变体选择器:

// VariantSelector.jsx — uses radio inputs for accessibility
function VariantSelector({ product, selectedOptions, onOptionChange }) {
  function isAvailable(optionName, value) {
    return product.variants.some(v =>
      v.options[optionName] === value &&
      v.inventory > 0 &&
      Object.entries(selectedOptions).every(([k, sv]) =>
        k === optionName || v.options[k] === sv
      )
    );
  }

  return (
    <div className="variant-selector">
      {product.optionNames.map(optionName => (
        <fieldset key={optionName}>
          <legend>{optionName}: <strong>{selectedOptions[optionName]}</strong></legend>
          {product.optionValues[optionName].map(value => (
            <label key={value} className={!isAvailable(optionName, value) ? 'unavailable' : ''}>
              <input type="radio" name={optionName} value={value}
                checked={selectedOptions[optionName] === value}
                disabled={!isAvailable(optionName, value)}
                onChange={() => onOptionChange(optionName, value)}
                className="sr-only" />
              <span className="option-btn">{value}</span>
              {!isAvailable(optionName, value) && <span className="sr-only"> (out of stock)</span>}
            </label>
          ))}
        </fieldset>
      ))}
    </div>
  );
}

粘性加入购物车栏(主按钮滚出视口时显示):

function StickyBuyBar({ product, selectedVariant, onAddToCart }) {
  const [visible, setVisible] = useState(false);
  useEffect(() => {
    const el = document.getElementById('main-add-to-cart');
    if (!el) return;
    const obs = new IntersectionObserver(([e]) => setVisible(!e.isIntersecting));
    obs.observe(el);
    return () => obs.disconnect();
  }, []);

  return visible ? (
    <div className="sticky-buy-bar" role="complementary" aria-label="Add to cart">
      <span>{product.name}</span>
      <span>${selectedVariant?.price ?? product.price}</span>
      <button onClick={onAddToCart} disabled={!selectedVariant || selectedVariant.inventory <= 0}>
        {selectedVariant?.inventory <= 0 ? 'Sold Out' : 'Add to Cart'}
      </button>
    </div>
  ) : null;
}

用于 SEO 的产品结构化数据(JSON-LD):

// Build server-side to avoid client-side injection
function buildProductSchema(product, reviews) {
  return {
    '@context': 'https://schema.org',
    '@type': 'Product',
    name: product.name,
    image: product.images.map(i => i.src),
    description: product.description,
    sku: product.sku,
    brand: { '@type': 'Brand', name: product.brand },
    offers: {
      '@type': 'AggregateOffer',
      lowPrice: Math.min(...product.variants.map(v => v.price)).toFixed(2),
      priceCurrency: 'USD',
      availability: product.inStock ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',
    },
    ...(reviews.totalCount > 0 && {
      aggregateRating: {
        '@type': 'AggregateRating',
        ratingValue: reviews.averageRating.toFixed(1),
        reviewCount: reviews.totalCount,
      },
    }),
  };
}
第 3 步:添加社交证明和信任信号

无论使用何种平台,以下元素都能直接提升加入购物车转化率:

  1. 标题附近的星级评分 — 将评论平均分和数量紧邻产品名称放置,位于价格上方
  2. 库存提示 — 仅在库存确实较低(少于 10 件)时显示“仅剩 3 件”;绝不要制造虚假的紧迫感
  3. 信任徽章 — 在加入购物车按钮附近显示安全结账、免费退货和保修标志;大多数主题都设有信任徽章区域,也可以使用免费应用
  4. 近期购买通知 — Sales Pop(Shopify)或 WooCommerce Sales Popup 等应用会显示“[城市] 有人于 2 小时前购买了此商品”——仅使用真实数据

最佳实践

  • 优先展示首屏内容 — 在桌面端无需滚动即可看到标题、价格、主图和加入购物车按钮
  • 为变体选择器使用语义化 HTML — 使用 <fieldset>/<legend>/<input type="radio"> 模式,而不是可点击的 <div> 元素;屏幕阅读器会通过此模式进行导航
  • 延迟加载首屏以下的图片 — 只有主图使用 loading="eager";缩略图和次要图片使用 loading="lazy"
  • 清晰展示划线价 — 将原价划线显示在售价旁边
  • 禁用而非隐藏缺货变体 — 将其显示为禁用状态,让用户了解该产品有哪些选项
  • 使用真实库存数据营造紧迫感 — 绝不要伪造“仅剩 3 件”之类的提示;请使用实际库存数量,否则就移除该提示

常见问题

问题解决方案
图片加载导致 CLS为图片设置明确的 width 和 height,或在容器上使用 aspect-ratio
变体选择器不会更新 URL使用 replaceState,将所选变体 ID 更新到 URL 中,以便分享页面
长页面(移动端)上加入购物车按钮被隐藏实现粘性加入购物车栏,在主按钮滚出视口时显示
移动端图库图片加载缓慢使用 srcset 提供响应式图片,并采用 WebP/AVIF 格式
评论区导致初始加载时间过长延迟加载评论——仅在用户滚动到附近时初始化该区域

相关技能

  • @image-zoom-360
  • @responsive-storefront
  • @accessibility-commerce
  • @checkout-flow-optimization
  • @search-autocomplete

评论

支持 Markdown