1つのカレンダーで曜日毎に違う時間割にする。

MTS Simple Booking C をカスタマイズして、土曜日だけ又は土日だけ違う時間割にする方法を以前投稿したが、

全ての曜日を違う時間割にしたいという要望があったので、少々面倒だがやってみた。

サンプルとして下記の設定でやってみた。

日曜日 - 休み
月曜日 - 休み
火曜日 - 19:00~
水曜日 - 20:00~
木曜日 - 休み
金曜日 - 19:30~
土曜日 - 休み

休みの曜日が多いのは、カレンダーにチェックをつける作業が面倒だったから(^_^;)
それはともかく、上記を全部1つのカレンダーで表示させてみよう。

まず、予約品目を新規に8つ作成する。
そのうち1つは、カレンダーを表示させるための土台用
残り7つは曜日毎の時間割に設定する。
休みの曜日も含めて全ての曜日の予約品目を作成する。
その方がカスタマイズがシンプルになるし、後で休みが変更になっても時間割変更だけで対応できる。
作成後に8つ全ての予約品目IDをメモしておく。
サンプルでは、下記のように作成した。
サンプル室C - 土台用
サンプル室C(日曜日) - 日曜日用
サンプル室C(月曜日) - 月曜日用
サンプル室C(火曜日) - 火曜日用
サンプル室C(水曜日) - 水曜日用
サンプル室C(木曜日) - 木曜日用
サンプル室C(金曜日) - 金曜日用
サンプル室C(土曜日) - 土曜日用

youbiid
予約品目の画面で「編集」にマウスカーソルをのせて
下に表示される数字が「予約品目ID」。この場合は「70」。

他のも全て予約品目IDをメモしておく。
サンプルでは下記のようになっていた。
サンプル室C - 予約品目ID 70
サンプル室C(日曜日) - 予約品目ID 71
サンプル室C(月曜日) - 予約品目ID 72
サンプル室C(火曜日) - 予約品目ID 73
サンプル室C(水曜日) - 予約品目ID 74
サンプル室C(木曜日) - 予約品目ID 75
サンプル室C(金曜日) - 予約品目ID 76
サンプル室C(土曜日) - 予約品目ID 77

これらの新規作成した予約品目に、予約システム → スケジュール で使用する曜日にチェックをつけて、下の「スケジュール保存」をクリックする作業をする。
kayousche
曜日毎に別の予約品目を表示してチェックする作業が必要になる。

この作業がわりと面倒だった。今後も先のカレンダーにチェックをつけるとき、曜日毎に別の予約品目を表示する作業が発生するが、こういう仕様なので仕方ない。
ちなみに土台用に作成した予約品目は何もチェックする必要ない。

ここまで用意したら、次にmtssb-front.php を編集する。まず下記の黄色にマークした9行を挿入。

赤数字の部分は、さきほどメモした新規作成した8つの予約品目IDにしなくてはならない。

さらにmtssb-front.php の下記の場所に黄色にマークした29行を挿入。

これだけでは、まだカレンダーは表示されない。
さらにmtssb-front.php の上記の場所より下の方、下記の場所に黄色にマークした71行を挿入。

これで、土台用に指定した予約品目のカレンダーを表示する時、曜日毎に予約品目情報を入れ替える動作をする。

他の関係ない予約品目のカレンダーを表示する時には影響がない。

最後に、ショートコードを書いた固定ページでカレンダーを表示させる。
ショートコードに使用する予約品目IDは「土台用」に作成した予約品目IDだけ。
サンプル室Cの土台用に作成した予約品目IDは「70」なので

[monthly_calendar id="70"] と書いた固定ページでカレンダーを表示させる。

以上で完了。
サンプルサイトサンプル室予約サイト のサンプル室Cで動作確認ができる。

  • このエントリーをはてなブックマークに追加

コメント

  1. かとう より:

    突然の質問で失礼します。
    特定の日(祝日など)の時間を変更するというカスタマイズは考えておられますか?

  2. ひで より:

    これを探していたんです!
    本当に助かりました! ありがとうございました。

  3. ひで より:

    はじめまして。
    当サイトを拝見させていただき、PHP初心者でもわかりやすい解説で大変助かっております。ありがとうございます!
    この記事「1つのカレンダーで曜日毎に違う時間割にする」の通りに一通りやってみました。うまく動作しており感動しております!

    そこで大変恐縮ながら、ひとつ質問をさせていただきます。
    私が最終的にやりたいことは、
    1)曜日毎に違う時間割にする –> 解決
    2)「予約受付期間」を「○日間」のように日数単位で設定したい

    現行のシステム上では、各種設定での予約受付期間が月単位のみの仕様となっており、最低でも1か月(30日)すべて予約可能の「○」が表示されてしまいます。この設定を例えば「4日先まで」や「7日先まで」等のように日数単位での受付期間に変更できるものでしょうか? 私のカレンダーでは直近の予約のみ受付可能にしたいと思っておりまして、該当のPHPファイルの中身をいろいろと見ながら試行錯誤しております^^);

    何卒、ご教示いただければ幸いです。

    よろしくお願い致します。

    • 管理人 より:

      はじめまして。
      以前にも同様の質問がありましたが、私には方法が分かりません。
      お役に立てなくてすいません。

  4. おっくん より:

    急に○や×などがカレンダーに表示されなくなり、すべて不可マークとなってしまっております。

    対処法があれば教えてください。。。

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です