管理画面から年間カレンダーを操作して定休日を登録し、フロント画面にカレンダーブロックとして表示するプラグインです。
登録した定休日を活用して、発送日数(商品規格別)と配送日数(都道府県別)を考慮した最短お届け日を自動算出し、お客様が選択できるお届け日の範囲を調整する機能も搭載しています。
サイドバーに 定休日カレンダー・最短お届け日調整 が追加されます。


年間カレンダー表示
- 設定可能な範囲:当年〜5年後
- 年セレクトで表示年を切り替え
- 未保存の変更がある状態で年を切り替えようとすると確認ダイアログを表示

定休日の個別操作
- カレンダー上の日付セルをクリックするとその日の定休日状態をトグル(ON/OFF)
一括操作
-
曜日ボタン(日〜土): クリックするとその年の同曜日の全日付を一括選択/解除
-
祝日ボタン: クリックするとその年の全祝日を一括選択/解除
-
全てクリア: 確認ダイアログの後、その年の全定休日を解除
-
登録ボタン: カレンダー上部・下部にそれぞれ設置、クリック時に選択中の定休日をまとめて保存(差分更新)
サイドバーの 定休日カレンダー・最短お届け日調整 > プラグイン設定 からアクセスできるプラグイン固有の設定画面です。
コアとなる設定はすべてここで管理します。

カレンダーブロック設定
-
カレンダーブロック表示月数: フロントのカレンダーブロックで表示する月数(1〜12ヶ月)
お届け日調整設定
-
機能の有効/無効: チェックボックスで機能全体を ON/OFF。OFF の場合、以下の設定はすべて無効(お届け日指定はEC-CUBE標準の動作に従う)
-
即日発送受付時間: この時刻を過ぎた注文は翌営業日発送扱い(全商品一律適用)
-
商品の発送日数デフォルト値: 商品新規登録時に発送日数フィールドへ自動セットされるデフォルト値
-
発送日数カウント方法: 「定休日を除いてカウント(営業日のみ)」または「定休日もカウント(全日)」
-
指定可能な最大日数: 最短お届け日から何日先まで選択可能にするか(1〜365)

EC-CUBE標準の配送方法編集画面(設定 > 店舗設定 > 配送方法設定)の配送業者の編集画面のに以下のセクションが追加されます。

都道府県別配送日数設定
- 都道府県ごとに配送日数(発送から到着までの暦日数)を設定
- 設定値の意味:
-
空欄(未入力): その都道府県ではお届け日指定ができなくなる
-
0: 当日配送(発送した当日にお届け)
-
1以上: 発送日から N 暦日後にお届け
- 「全国一律に設定」欄に値を入力し「各都道府県に適用」ボタンで一括設定可能
お届け日時指定不可設定: チェックを入れると、この配送方法では注文時にお届け日・お届け時間を指定不可とする



EC-CUBE標準の商品編集画面・商品規格編集画面に「発送日数」フィールドが追加されます。
また、EC-CUBE標準の「発送日目安」フィールドは変更不可の表示に変わります。


-
空欄(未入力): その商品はお届け日指定フォームを非表示にする
-
0: 即日発送(発送起算日に発送)
-
1以上: 発送起算日から N 営業日後に発送(全日カウントモードの場合は N 暦日後)
- 規格が設定されている商品は規格ごとに発送日数を設定
- 複数商品を同時購入した場合は、購入商品の中で最大の発送日数が採用される
- 発送日数が空欄の商品が1点でも含まれている場合は、カート全体でお届け日指定が不可になる

- 表示月数はプラグイン設定画面で設定可能(1〜12ヶ月)
- 登録済みの定休日をピンク背景(赤文字)で表示
- 本日の日付をハイライト表示
- 「前月」「次月」ボタンで非同期にカレンダーを切り替え可能

最短お届け日 = 発送日数(営業日カウントカウント) + 都道府県ごとの配送日数
STEP 1:発送起算日の決定
- 注文時刻 ≤ 即日発送受付時間 → 当日を発送起算日とする
- 注文時刻 > 即日発送受付時間 → 翌日を発送起算日とする
STEP 2:発送予定日の算出
-
全日カウントモード:発送起算日から暦日で発送日数を加算(定休日も1日としてカウント)
-
営業日のみカウントモード:
- ① 発送起算日が定休日の場合は次の営業日を起点とする
- ② 起点からさらに N 営業日進む(定休日をスキップしてカウント)
- ③ ループ終了時点は必ず営業日
STEP 3:最短お届け日の算出
- 発送予定日 + 配送先都道府県の配送日数 = 最短お届け日
STEP 4:選択可能範囲の確定
- 最短お届け日から指定可能な最大日数分が選択肢として表示される(定休日も選択肢に含まれる)
例1:営業日のみカウント(週末スキップ)
条件:発送日数カウント方法は「営業日のみカウント」、土・日が定休日、北海道への配送日数 2 日、発送日数 1 日の商品を受付時間内に金曜注文
- ①発送起算日:金曜(受付時間内のため当日)
- ②発送予定日:金曜を起点に 1 営業日進む → 土・日は定休日のためスキップ → 月曜発送
- ③最短お届け日:月曜 + 配送日数 2 日(暦日)→ 水曜日にお届け
例2:全日カウント(定休日もカウント)
条件:発送日数カウント方法は「全日カウント」、土・日が定休日、東京都への配送日数 1 日、発送日数 2 日の商品を受付時間内に金曜注文
- ①発送起算日:金曜(受付時間内のため当日)
- ②発送予定日:全日カウントのため金曜から暦日で 2 日後 → 日曜発送
- ③最短お届け日:日曜 + 配送日数 1 日(暦日)→ 月曜日にお届け
例3:受付時間超過(翌日起算)
条件:発送日数カウント方法は「営業日のみカウント」、土・日が定休日、愛知県への配送日数 1 日、発送日数 1 日の商品を金曜 18:00(受付時間超過)に注文
- ①発送起算日:土曜(受付時間超過のため翌日)
- ②発送予定日:営業日のみカウントでは、起算日が定休日のため次の営業日(月曜)を起点に 1 営業日進む → 火曜発送
- ③最短お届け日:火曜 + 配送日数 1 日(暦日)→ 水曜日にお届け
例4:発送日数 0(日数加算なし)
条件:発送日数カウント方法は「営業日のみカウント」、定休日なし、大阪府への配送日数 2 日、発送日数 0 日の商品を受付時間内に水曜注文
- ①発送起算日:水曜(受付時間内のため当日)
- ②発送予定日:発送日数 0 のため 水曜発送
- ③最短お届け日:水曜 + 配送日数 2 日(暦日)→ 金曜日にお届け
例5:配送日数 0(当日配達)
条件:発送日数カウント方法は「営業日のみカウント」、土・日が定休日、福岡県への配送日数 0 日、発送日数 1 日の商品を受付時間内に木曜注文
- ①発送起算日:木曜(受付時間内のため当日)
- ②発送予定日:木曜を起点に 1 営業日進む → 金曜発送
- ③最短お届け日:金曜 + 配送日数 0 日 → 金曜日にお届け
- 土・日・祝日だからといって自動的に発送不可日にはなりません。定休日カレンダーに登録した日のみが発送不可日の扱いになります。
- 配送先都道府県の配送日数が空欄の場合、その配送方法ではお届け日指定フォームが非表示になります(EC-CUBE 標準にはフォールバックしません)。
- 当プラグインをインストール&有効化してください。
-
管理画面 > コンテンツ管理 > キャッシュ管理 より、キャッシュ削除 を行なってください。
-
管理画面 > 定休日カレンダー・最短お届け日調整 > プラグイン設定 より、カレンダーブロック表示月数・お届け日調整設定を行ってください。
-
管理画面 > 定休日カレンダー・最短お届け日調整 > カレンダー設定 より定休日を設定してください。
-
管理画面 > 設定 > 店舗設定 > 配送方法設定 より各配送方法の編集画面で都道府県別配送日数を設定してください。
- 各商品の編集画面で発送日数を設定してください。
-
管理画面 > コンテンツ管理 > レイアウト管理 より、定休日カレンダー(プラグイン) ブロックを表示したいレイアウトに配置してください。
-
管理画面 > コンテンツ管理 > キャッシュ管理 より、キャッシュ削除 を行なってください。
-
管理画面 > 定休日カレンダー・最短お届け日調整 > カレンダー設定 を開く
- 年セレクトで設定したい年を選択する
- 定休日を設定する
- 「登録」ボタンをクリックして保存する
-
管理画面 > 定休日カレンダー・最短お届け日調整 > プラグイン設定 を開く
- 「お届け日調整機能を有効にする」にチェックを入れ、各設定項目を入力して保存する
-
管理画面 > 設定 > 店舗設定 > 配送方法設定 より各配送方法の編集画面を開き、都道府県別配送日数を設定する
- 各商品の編集画面で発送日数を設定する
- 年を切り替える前に必ず「登録」ボタンで保存してください。未保存のまま年を切り替えると変更内容は失われます(切り替え時に確認ダイアログが表示されます)。
- 祝日データは内閣府公開のCSV(https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv)を取得して使用しています。振替休日・国民の休日を含む政府公式データです。
- 複数商品を同時購入した場合は、最も発送日数の多い商品の日数が全体に適用されます。発送日数が空欄の商品が1点でも含まれている場合、その注文全体でお届け日指定フォームを非表示にします(指定不可)。
ブロックテンプレートのコピー(上書き):
- コピー元:${ECCUBE_ROOT}/app/Plugin/BootechHolidayCalendar43/Resource/template/Block/holiday_calendar.twig
- コピー先:${ECCUBE_ROOT}/app/template/${ECCUBE_TEMPLATE_CODE}/Block/holiday_calendar.twig
定休日カレンダー(プラグイン) ブロックの作成:
ブロックテンプレートのコピー(既存ファイルがない場合のみ):
- コピー元:${ECCUBE_ROOT}/app/Plugin/BootechHolidayCalendar43/Resource/template/Block/holiday_calendar.twig
- コピー先:${ECCUBE_ROOT}/app/template/${ECCUBE_TEMPLATE_CODE}/Block/holiday_calendar.twig
定休日カレンダー(プラグイン) ブロックおよびブロックレイアウトの削除:
コピーしたテンプレートの削除:
- 削除対象:${ECCUBE_ROOT}/app/template/${ECCUBE_TEMPLATE_CODE}/Block/holiday_calendar.twig
本プラグインが追加・拡張するテーブルとカラムの一覧です。
plg_bootech_holiday_calendar_config(プラグイン設定)
id
smallint
1
レコードID(常に1、シングルトン設定)
calendar_display_months
smallint
3
フロントのカレンダーブロックで表示する月数(1〜12)
delivery_date_enabled
boolean
false
お届け日調整機能の有効フラグ。false のときは EC-CUBE 標準のお届け日動作に従う
cutoff_time
string(5)
"15:00"
即日発送受付時間(JST "HH:MM" 形式)。この時刻を過ぎた注文は翌営業日発送扱いになる
default_shipping_days
smallint nullable
null
商品新規登録時に発送日数フィールドへ自動セットされるデフォルト値。null の場合は自動セットしない
shipping_days_count_method
smallint
0
発送日数のカウント方法。0 = 全日カウント(定休日も含む)、1 = 営業日のみカウント(定休日をスキップ)
max_delivery_days
smallint
21
お届け日として選択可能な最大日数(最短お届け日から何日先まで表示するか)(1〜365)
plg_bootech_holiday_calendar_closed_day(定休日)
id
integer (unsigned, auto)
レコードID
holiday
date
定休日の日付(時刻なし)
title
string(255) nullable
定休日の名前・メモ(任意入力。管理用途)
create_date
datetimetz
レコード作成日時
update_date
datetimetz
レコード更新日時
plg_bootech_holiday_calendar_delivery_shipping_days(配送方法×都道府県別配送日数)
id
integer (unsigned, auto)
レコードID
delivery_id
integer (FK→dtb_delivery)
対象となる配送方法のID(削除時 CASCADE)
pref_id
smallint (unsigned)
都道府県ID(mtb_pref.id に対応)
shipping_days
smallint nullable
配送日数(暦日)。null = お届け日指定を非表示、0 = 当日配達、1以上 = 発送日から N 日後に配達
create_date
datetimetz
レコード作成日時
update_date
datetimetz
レコード更新日時
plg_bootech_holiday_calendar_holiday_cache(祝日APIキャッシュ)
id
integer (unsigned, auto)
レコードID
year
integer (unsigned)
キャッシュ対象の年(西暦)
holiday_name
string(255)
祝日の名称(内閣府公開データより)
cached_at
datetimetz
キャッシュ取得日時
create_date
datetimetz
レコード作成日時
update_date
datetimetz
レコード更新日時
dtb_delivery への拡張カラム(DeliveryTrait)
既存の dtb_delivery テーブルに以下のカラムが追加されます。
plg_bootech_holiday_calendar_no_delivery_date
boolean
false
お届け日時指定不可フラグ。true の場合、この配送方法ではお届け日・お届け時間の入力フォームを購入フローで非表示にする
dtb_product_class への拡張カラム(ProductClassTrait)
既存の dtb_product_class テーブルに以下のカラムが追加されます。
plg_bootech_holiday_calendar_shipping_days
smallint nullable
商品規格ごとの発送日数。0 = 即日発送、1以上 = N営業日(または全日)後発送、null = この商品ではお届け日指定フォームを非表示にする
デモ環境で動作をご確認いただけます。アクセス情報は下記をご参照ください。
※デモ環境は、EC-CUBEのデフォルト環境にプラグインをインストールし、有効化したのみの状態です。プラグインの仕様によっては、別途追加の設定が必要になる場合がございます。
4.3.x 系
フロント 管理画面 ログインID: administrator パスワード: password12345678
4.2.x 系
フロント 管理画面 ログインID: administrator パスワード: password12345678
4.1.x 系
フロント 管理画面 ログインID: administrator パスワード: password12345678
4.0.x 系
フロント 管理画面 ログインID: administrator パスワード: password12345678
- 毎日午前0時より数分間、システムメンテナンスを実施します。この間、初期化処理を行うため、設定情報がリセットされます。
- 事前の予告なしに、システムメンテナンスを実施する場合があります。
- デモ環境で不具合などを発見された場合は、サポートまでメールでご連絡ください。
プラグインのロジック変更や項目追加のほか、本体カスタマイズも承っております。お気軽にこちらまでご連絡ください。
EC-CUBE やシステム開発関連の情報発信をしています。詳しくは、Bootech 公式サイトをご覧ください。
EC-CUBE 4系のローカル環境構築プロジェクトの運営も行なっています。詳しくは、Docker for EC-CUBE 4をご確認ください。