ConcreteCMS9.4.8でカレンダーの設定方法は記載してきましたが、イベント追加の時に時間を選択しようとするとディフォルトでは画像のように5分単位となっていて予定の時間が細かくないカレンダーにとっては使いづらいので30分単位で選択できるようにカスタマイズしてみました。

まずこの5分を決めているファイルを探しました。
「concrete/elements/date_time/duration.php」に設定されている事がわかりました。
このファイルそのものを変更せずにコピーしたファイルを変更します。
画像のように17行目から赤い部分の変更をします。

これが変更後のコードです。(※28行目も変更していたのを忘れていました。)
9時~20時までのスケジュールがよかったので変更しています。【 foreach (range(9, 20) as $hour) {】

ソースコードを記載します。
このコードでコピーしておいた「duration.php」を保存します。
| 17 | $values = array(); |
| 18 | if (Punic\Calendar::has12HoursClock()) { |
| 19 | foreach (array(12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) as $hour) { |
| 20 | $values[] = $hour . ':00am'; |
| 21 | $values[] = $hour . ':30am'; |
| 22 | } |
| 23 | foreach (array(12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) as $hour) { |
| 24 | $values[] = $hour . ':00pm'; |
| 25 | $values[] = $hour . ':30pm'; |
| 26 | } |
| 27 | } else { |
| 28 | foreach (range(9, 20) as $hour) { |
| 29 | foreach (range(0, 30, 30) as $minute) { |
| 30 | $values[] = $hour . ':' . substr('0' . $minute, -2); |
| 31 | } |
| 32 | } |
| 33 | } |
先ほど保存した「duration.php」を「application/elements/date_time/duration.php」に置いて下さい。
(「オーバーライド」と言いますが、元のファイル「concrete/elements/date_time/duration.php」を変更してしまうとConcreteCMSのアップデートのたびに変更したファイルがデフォルト状態に戻り5分間隔となるので「application/elements/date_time/duration.php」に置きます。※フォルダがない場合は作成してください)
これでイベント追加の時に時間の間隔がデフォルトで5分となってるところを30分にする事ができました。
