关于 product-page-design
product-page-design 是面向电商设计与开发者的技能,指导创建和优化产品详情页。内容涵盖主流店铺平台配置及自定义页面的布局、组件和转化相关实践。
主要功能
- 01产品图库与缩放设计
- 02多属性变体选择器
- 03数量与加入购物车控件
- 04评价及库存提示
- 05响应式与平台适配建议
适用场景
- 01从零构建店铺产品详情页
- 02优化现有页面的加入购物车转化
- 03为颜色和尺码选项实现变体选择
- 04加入评价、评分与库存信息
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill product-page-design安装后在 Claude Code 中输入/product-page-design确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
tile.jsonevals/image-gallery-accessibility-and-performa/criteria.jsontask.mdevals/social-proof-seo-structured-data-image-o/criteria.jsontask.mdevals/variant-selector-layout-and-sticky-atc/criteria.jsontask.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
布局配置(主题编辑器):
- 前往 Online Store → Themes → Customize
- 导航至 Products → Default product 模板
- 配置 Product information 部分:
- 如果销售多件装商品,请启用 Quantity selector
- 在 Add to Cart 下方启用 Payment button(Buy it now / Shop Pay 快速结账)
- 设置 Variant selector style:选项较多时使用下拉菜单,尺寸/颜色选项使用按钮
- 在 Product media 部分,将 Media size 设为 Large 或 Extra Large,以获得更好的缩放质量
- 如果主题支持,请启用 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
布局配置:
- 前往 WooCommerce → Settings → Products → Display
- 将 Product images 尺寸设为 Large(至少 600×600px),以获得更好的缩放效果
- 在 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 主题):
- 前往 Storefront → My Themes → Customize
- 在 Product Page 下,配置:
- Image layout:Carousel、Thumbnail strip vertical 或 Thumbnail strip horizontal
- Gallery zoom:启用悬停缩放
- Product options 显示方式:根据选项类型选择 Dropdown 或 Swatch buttons
- 如果主题版本支持,请启用 Sticky Add to Cart(Cornerstone 6+)
评论:
- 前往 Storefront → Product Reviews,启用内置评论系统
- 设置评论的最小长度,以及评论发布前是否需要审核
- 如需高级评论功能(照片评论、问答、评论邮件),请从 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 步:添加社交证明和信任信号
无论使用何种平台,以下元素都能直接提升加入购物车转化率:
- 标题附近的星级评分 — 将评论平均分和数量紧邻产品名称放置,位于价格上方
- 库存提示 — 仅在库存确实较低(少于 10 件)时显示“仅剩 3 件”;绝不要制造虚假的紧迫感
- 信任徽章 — 在加入购物车按钮附近显示安全结账、免费退货和保修标志;大多数主题都设有信任徽章区域,也可以使用免费应用
- 近期购买通知 — 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