注文手続き画面でお客様が選べるお届け日は、既定で「最短のお届け可能日から21日後まで」の範囲になっています。この日数は設定ファイルの1行で変更できます。範囲そのものではなく選択肢の起点を変えたい場合は別の設定になるので、その違いもあわせて整理します。
選択できる日数は eccube_deliv_date_end_max で決まる
EC-CUBE4では app/config/eccube/packages/eccube.yaml に次の行があります。
eccube_deliv_date_end_max: 21
この 21 が、最短お届け可能日から何日先までを選択肢に出すかの日数です。既定では3週間分の日付が並びます。
たとえば1週間先までに絞るなら、次のように変更します。
eccube_deliv_date_end_max: 7
eccube.yamlはコンパイルされてキャッシュに載るため、変更後はキャッシュクリアが必要です(.envの値と違い、書き換えただけでは反映されません)。
php bin/console cache:clear --no-warmup
選択肢の起点は商品の「発送日目安」で決まる
ここを混同しやすいので分けて説明します。
eccube_deliv_date_end_max が決めるのは範囲の終わりだけです。選択肢がいつから始まるかは、この設定では変わりません。
起点となる最短お届け可能日は、カートに入っている商品の「発送日目安」から計算されます。複数商品が入っている場合、最も遅い発送日目安が採用されます。
つまり次の関係です。
| 変えたいもの | 触る場所 |
|---|---|
| 選択肢の範囲(何日先まで) | eccube.yaml の eccube_deliv_date_end_max |
| 選択肢の起点(最短何日後から) | 商品マスタの「発送日目安」 |
「明日から選べるようにしたい」「最短でも3日後にしたい」というのは起点の話なので、設定ファイルではなく発送日目安の側で調整します。発送日目安の選択肢そのものを増減する方法は商品管理「発送日目安」選択肢の追加・変更・削除方法にまとめています。
日付の並べ方を独自に変えたい場合
「土日を除外したい」「特定の休業日を飛ばしたい」といった要件は、設定では対応できません。選択肢を生成している処理に手を入れます。
4系では EccubeFormTypeShoppingShippingType の中で、最短日から eccube_deliv_date_end_max 日後までの日付を1日刻みで生成しています。ここをカスタマイズすることで、任意の日付だけを選択肢にできます。
本体のファイルを直接書き換えるとバージョンアップ時に失われるため、app/Customize 配下でフォームを拡張する形で実装してください。
EC-CUBE3の場合
3系は設定ファイルの場所と書き方が違います。app/config/eccube/config.yml の deliv_date_end_max が同じ役割です。
deliv_date_end_max: 21
選択肢を生成しているのは ShoppingService の getFormDeliveryDates() メソッドです。処理の考え方は4系と同じで、最短日からこの日数分の配列を作っています。
なお3系では、発送日目安のテーブル名が dtb_delivery_date です(4系は dtb_delivery_duration)。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。
EC-CUBEゴールドパートナー