---
title: "商品页、购物车还是结账页：配送日期选择器该放在哪里"
description: "三个位置没有高下之分，只有取舍，而哪些位置可用由你的 Shopify 套餐决定。每个位置的代价、没人提起的故障，以及如何选择。"
contentType: "blog"
locale: "zh"
localized: true
source: "https://orderrules.com/zh/blog/where-to-put-delivery-date-picker-shopify"
slug: "where-to-put-delivery-date-picker-shopify"
date: "2026-09-23"
tags:
  - "shopify"
  - "delivery date picker"
  - "checkout"
  - "shopify plus"
  - "cart"
  - "delivery dates"
  - "checkout extensibility"
---
任何售卖时效性商品的店铺，最终都会遇到同一个问题：配送日期选择器到底该放在哪里？

能找到的答案大多在讲怎么做，而不是放在哪里——这边一段主题代码，那边一个结账扩展。位置本身被当成细节。它不是细节。它决定了哪些顾客会给你日期、哪些顾客不留日期就走完流程，以及你在多少次情况下是在最不该知道的时候才发现。

一共三个位置。没有哪个是最好的。

![OrderRules 配送日期选择器位置对比——商品页、购物车与 Shopify Plus 结账页，标出各自适用的套餐以及日期可能丢失的环节](/images/blog/where-to-put-delivery-date-picker-shopify.png)

## 你的 Shopify 套餐允许什么

从这里开始，因为它会在个人偏好介入之前先砍掉一部分选项。

| 位置 | 套餐 | 实现方式 |
| --- | --- | --- |
| 商品页 | 全部 | 商品表单内的 theme app block |
| 购物车 | 全部 | 购物车页或抽屉中的 theme app block |
| 结账页 | **仅 Shopify Plus** | Checkout UI extension |

Checkout UI extension 只在 Plus 的结账流程中运行。这是平台边界，不是应用的限制，没有哪个应用能绕开它卖给你。

有一点值得在这里理清楚，因为时间线容易让人误会。`checkout.liquid` 和 Additional Scripts 对**非 Plus** 店铺停止运行的时间是 2026 年 8 月。Plus 店铺早在 2024 年和 2025 年就已完成迁移。所以，如果你是因为最近结账页定制坏掉才找到这个问题，那你几乎可以确定在非 Plus 套餐上——对你来说，解决办法是商品页或购物车位置，而不是一个你根本无法运行的结账扩展。

## 商品页

日期位于加入购物车的表单内，因此在商品进入购物车之前就已选定。

**当日期本身是购买决策的一部分时，选它。** 周六约满了，为周六订的蛋糕就没有购买意义。一束赶不上 14 号的花不是一笔订单，而是一次失望。在顾客做选择的那一刻就展示可用情况，决定了这是一笔成交还是一次退款。

它也是唯一能扛住 **Buy Now** 的位置。因为它就在商品表单内部，使用动态结账按钮的顾客同样会带着日期走。

**它的代价。** 你在购物车还不存在的时候就要求顾客做出承诺，这是最早阶段的摩擦。而且在多商品订单上形态是错的：一次买四样东西的顾客不会想选四个日期，除非这些商品确实分开发货。

## 购物车

整张订单一个日期，在所有商品都进篮之后选定。

**当日期适用于整张订单而非单个商品时，选它**——每周的生鲜配送、一次餐饮订单、一次排定的集中送货。

**它的代价，这一条最容易让人栽跟头。** **Buy Now** 按钮会完全跳过购物车。使用它的顾客直接落到结账页，你放在购物车页的选择器从未渲染过，那张订单到手时没有任何日期。你不会看到报错。你会看到一张排不进班的订单。

还有购物车形态的问题。Shopify 官方文档中那套购物车日期选择器方案只在购物车*页面*有效——帮助文章明确写着它不适用于抽屉式或弹窗式购物车。不少店铺是在因为别的原因换成抽屉式购物车之后，才发现这一点。

## 结账页 — Shopify Plus

选择器出现在最后一步，作为结账流程本身的一部分。

**当日期是确认而非选择时，选它**，或者当你希望通往购物车的路径保持干净时。它也是唯一能覆盖全部订单的位置，无论顾客走哪条路进来，因为所有人都要经过结账页。

**实际操作中的坑。** 把功能打开还不够。选择器只有在以下条件同时成立时才会出现：配送日期已启用、至少存在一条可用规则、结账开关已打开，*并且*区块已在 Shopify 的结账编辑器中放好。其中三项在应用里，第四项在 Shopify 里——这就是为什么「我打开了但什么都没发生」是这个位置最常见的问题。

**它的代价。** 顾客处在漏斗中最深的位置。在这里才发现某个日期不可用，是代价最高的时刻——这正是容量必须在更靠前的环节也生效、而不只是在最后一步把关的原因。而且它需要 Plus。

## 按商品还是按订单？

位置和日期*粒度*是两个决策，但彼此制约，各自独立决定往往导致店铺把这套东西返工两次。

**按订单**意味着整个购物篮一个日期。适合生鲜、餐饮、每周礼盒——凡是某天装一辆车出去的业务。购物车和结账页两个位置天然契合，因为到那时篮子里有什么已经确定。

**按商品**意味着每一行各带自己的日期。适合商品生产周期确实不同的店铺：现货靠垫明天就能发，旁边那张软包椅子要十周。这实际上只在**商品页**行得通，因为那是唯一一个顾客只看着单件商品及其交期的地方。

常见错误是采用按商品的日期，却在购物车里收集它们。同一个问题要问顾客好几遍，而收上来的答案又很难与一条配送路线对上。如果商品一起发出，一个日期才是诚实的模型。如果确实不一起发，就在商品层面把话说清楚。

## 没人提起的故障

去任何一个 Shopify 社区问一圈，你会反复看到同样的两个帖子：*我在购物车选的日期没出现在结账页*，以及*日期没有保存到订单上*。

这才是配送日期真正的风险，它与位置无关——它关乎这个值能否在一次次传递中存活下来。日期在店铺前台被采集，要传到结账页，要写进订单，还要到达你真正干活时看的地方：后台视图、订单标签、配送路线用的 CSV 导出。

任何一环断掉，选择器看上去依然正常。日历渲染出来了，顾客选了，订单也完成了。你是在打包台上才发现的。

在评估一种方案时——主题代码片段、应用，还是自研扩展——该问的不是「日历显示了吗」，而是：**下一笔测试订单，然后在后台查这张订单、查它的标签、查 CSV 导出。** 三处都有日期，这条链才算接住了。

## 如何选择

| 你的情况 | 位置 |
| --- | --- |
| 日期决定这单成不成（蛋糕、鲜花、活动） | **商品页** |
| 整张订单一个日期（生鲜、餐饮、每周礼盒） | **购物车** |
| Buy Now／动态结账用得很多 | **商品页**，或 Plus 上的结账页 |
| 使用抽屉式或弹窗式购物车 | **商品页**或结账页——依赖购物车位置前请先实测 |
| 日期是对先前选择的确认 | **结账页**（Plus） |
| 希望每张订单都带日期，没有例外 | **结账页**（Plus），并在更靠前的环节约束容量 |
| 不在 Plus，且结账页定制刚坏掉 | **商品页或购物车**——结账这条路对你没有开放 |

多数店铺最终落在商品页或购物车。Plus 店铺通常会用两个位置，而不是一个。

## 在 OrderRules 中是怎么做的

三个位置读取的是**同一套**可用规则、备货时长、截单时间、休息日和容量。没有第二份配置需要维护，结账页也不可能与商品页显示得不一致，因为它们读的是同一个来源。

- 先前选定的日期会**一路带下去**。在结账页顾客是确认而不是重选；当商品各自带有日期时，结账页以只读方式展示以供确认。
- **容量处处生效。** 已约满的日期在商品页选择器、购物车和结账页都会置灰。
- **日期会到达你真正干活的地方**——保存到订单、作为[订单标签](/docs/delivery/order-auto-tagging)添加，并包含在配送路线用的 [CSV 导出](/docs/delivery/carrier-csv-export)中。
- 在 Plus 上，[结账页位置](/docs/delivery/delivery-date-at-checkout)是增量而非替代。在其他所有套餐上，商品页和购物车选择器与以往完全一样。

如果你的约束是某一天能做多少，而不是哪几天送货，那是另一项设置——见[下单日期与配送日期](/blog/order-date-vs-delivery-date)，讲的是把每日上限按配送日期而不是下单日期来计。

## 坦白说的边界

有一点值得挑明，因为无论把选择器放在哪里它都成立。

容量在结账环节强制执行，在包括快捷结账在内的所有常规情况下都成立。它没有做的是加锁。结账校验读取的是已预订情况的快照，因此当某个日期只剩最后一个名额时，两位顾客在大致同一秒完成结账，是可能都通过的。

这需要在只剩最后一个名额的日期上出现几乎同时的结账，所以很少见。但并非不可能，因此当某个日期的容量很小时，值得留出一个名额的余量，而不是卡在精确上限。告诉你不是这样的应用，是在宣称平台并未提供的能力。

## 接下来读什么

- [结账页的配送日期](/docs/delivery/delivery-date-at-checkout) — Plus 位置，以及它需要的四个条件
- [配送日期入门](/docs/delivery/getting-started-delivery-dates) — 任何套餐都可用的商品页与购物车选择器
- [Theme app block 设置](/docs/delivery/theme-app-block-setup) — 把区块放进你的主题
- [配送容量上限](/docs/delivery/capacity-limits) — 日期约满时为什么会置灰
- [最好的 Shopify 配送日期选择器应用](/blog/best-shopify-delivery-date-picker-apps) — 如果你还在挑工具
