この記事では、商品登録時の「発送日目安」および 商品購入時の「お届け日」のカスタマイズについて、以下3つを解説します。
- 商品登録画面の発送日目安の選択肢と、商品購入時のお届け日の選択肢を変更する
- お届け日の初期表示(プレースホルダー)を変更する
- デフォルトでは「指定なし」
- お届け日の選択できる日付を増やす
- デフォルトでは「21日」
「発送日目安」と「お届け日」の選択肢を変える

初期では、画像の通り「即日」や「1~2日後」から選択できる。
ここで選択した項目に連動し、商品購入時に選択できるお届け日も以下のように変わる。
- 即日 → 購入日から
- 1~2日後 → 購入翌日から
- 3~4日後 → 購入3日後から
▼▼▼▼▼

発送日目安の選択肢を変更し、商品購入時のお届け日表示も以下の通り変更しました。
- 翌日 → 購入翌日から
- 2日後 → 購入2日後から
- 3日後 → 購入3日後から
商品登録時に設定する「発送日目安」と、商品購入時にユーザーが選択できる「お届け日」は、データベースにある「dtb_delivery_duration」というテーブルを修正するだけで変更できます。

- 【name】プロパティ
-
nameプロパティに保存されたデータが商品登録画面の「発送日目安」で表示されます。
つまりこの項目を変更すれば、「発送日目安」の選択肢を変更できます。 - 【duration】プロパティ
-
「お届け日」にて選択できる日付を設定する項目です。
「0」を購入日とし、数値の日数分選択できるお届け日が後ろにズレます。また「-1」を設定すると、初期表示(デフォルトでは「指定なし」)以外の選択がなくなります。
- 【sort_no】プロパティ
-
「発送日目安」で表示される選択肢の順番を設定します。
数字が小さい順に、選択肢が表示されます。
また、新しくレコードを追加しても反映されます。
データベースに直接レコードを追加する場合は、【discriminator_type】に「deliveryduration」をセットするのを忘れないように。(忘れると反映されません。)
実際に変更してみた
「dtb_delivery_duration」テーブルを以下のように変更してみたところ、商品登録の発送日目安も変更されました!


【duration】プロパティも合わせて変更することで、商品購入時のお届け日の選択肢も変更できます。
「お届け日」の初期表示(プレースホルダー)を変える

「指定なし」が表示されている。
▼▼▼▼▼

「指定なし」を「最短」に変更
お届け日の初期表示(プレースホルダー)は、ファイルサーバー内の「ShippingType.php」を修正することで変更できます。
「ShippingType.php」ファイルは「src/Eccube/Form/Type/Shopping」下にあります。
このファイル内の「お届け日のプルダウンを生成」下にある以下コードで、初期表示を設定しています。
'placeholder' => 'common.select__unspecified',
コードが長く、探すのに苦労するかもしれませんが、筆者の場合は190行目あたりにありました。(EC-CUBEのバージョン等で異なるかもしれません。)
このcommon.select__unspecified
を修正すれば、初期表示を変更できます。
冒頭の画像では、「最短」に修正しました。
'placeholder' => '最短',
ちなみ、common.select__unspecified
=「指定なし」がどこで設定されているのかというと、「src/Eccube/Resource/locale」下の「messages.ja.yaml」内で設定されています。
選択できる「お届け日」の日付を増やす
購入時に選択できるお届け日の日付は、デフォルトでは21日(最初に選べる日付が「3月1日」であれば、「3月21日」まで)となっており、それ以降の日付を選択することはできません。
「app/config/eccube/packages/eccube_nav.yaml」に設定されている環境変数を変更することで、日付を増やしたり減らしたりできます。
eccube_deliv_date_end_max: 21
デフォルトでは 21
になっているので、この数値を変更(10
や30
など)すると、選択できる日付を増減できます。
YAMLファイルとは?
YAML(YAML Ain’t Markup Language)はデータの構造をシンプルに記述できる設定ファイル。EC-CUBEではさまざまな環境変数や設定ファイルを定義しており、「お届け日の最大日数」だけでなく「氏名の最大文字数」や「パスワードの最大長・最小長」なども設定されています。

まとめ
以上、発送日目安&お届け日に関するカスタマイズについて紹介しました。
比較的簡単に行えるカスタマイズですので、初心者の方でも手軽に行えると思います。
ただ、データベースやサーバーの操作を誤ると取り返しのつかない事態に発展する可能性もありますので、事前にバックアップをとるなどの対応をしておくと安心ですね。
