この記事では、商品登録時の「発送日目安」および 商品購入時の「お届け日」の変更方法について紹介します。
データベースを操作するだけの、比較的簡単にできるカスタマイズです。
【商品登録】の発送日目安。
初期では、画像の通り「即日」や「1~2日後」から選択できる。
ここで選択した項目に連動し、商品購入時に選択できるお届け日も以下のように変わる。
- 即日 → 購入日から
- 1~2日後 → 購入翌日から
- 3~4日後 → 購入3日後から
発送日目安の選択肢変更後。
選択肢の変更に加え、商品購入時のお届け日表示も以下の通り変更。
- 翌日 → 購入翌日から
- 2日後 → 購入2日後から
- 3日後 → 購入3日後から
また、お届け日の初期表示(プレースホルダー)も以下のように変えられます。
こちらはファイルサーバーにある「ShippingType」というファイルの一部を修正します。
デフォルト(初期表示)
初期では、「指定なし」が表示されている。
カスタマイズ後
「指定なし」を「最短」に変更
「発送日目安」と「お届け日」の選択肢を変える
商品登録時に設定する「発送日目安」と、商品購入時にユーザーが選択できる「お届け日」は、データベースにある「dtb_delivery_duration」というテーブルを修正するだけで変更できます。
- 【name】項目
-
初期状態では、name項目に「発送日目安」で表示される選択肢がセットされています。
つまりこの項目を変更すれば、「発送日目安」の選択肢を変更できます。 - 【duration】項目
-
「お届け日」にて選択できる日付を設定する項目です。
「0」を購入日とし、数値の日数分選択できるお届け日が後ろにズレます。例)「3」であれば、3日後から選択できる。
また「-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」内で設定されています。
まとめ
以上、発送日目安&お届け日に関するカスタマイズについて紹介しました。
比較的簡単に行えるカスタマイズですので、初心者の方でも手軽に行えると思います。
ただ、データベースやサーバーの操作を誤ると取り返しのつかない事態に発展する可能性もありますので、事前にバックアップをとるなどの対応をしておくと安心ですね。