WEBマスター

MODx1.0.7JのサイトにKalenderを導入

この記事は約3分で読めます。

MODxで作成した会社のサイトに、営業日カレンダーの設置を企てました。
はじめは単に「カレンダーを表示して休業日だけ色変えるだけだからすぐ見つかるだろう」と思っていました。中々しんどかったです。

最初に「CALx」を試してみました。
CALxの説明を読むと、機能的には必要十分で中々良さげだったのですが、残念なことに私のスキルでは日付を正しく表示させることが出来ませんでした。

つづいて「Kalender」を試してみました。
最終的に上手くいきましたので、以下にカスタム内容を残しておきます。
私が入れたのは、
Kalenderを改造してみた。|WEBサイト制作 SPEED=FISH
です。
普通に入れたらエラーが出たので、メッセージを見るとpathが違ってました。
MODxJP公式サイトを見ると、MODx1.0.6J-r5からディレクトリ構成が変わっているそうですので、新しいMODxに入れるときにはここを変更する必要があるようです。
Kalenderスニペット内の204行目の

$assets_path = $modx->config['rb_base_url'];

を、

$assets_path = '/assets/';

に書き換えたところ、無事にカレンダーが表示されました。

ということで休日を表示しようとしましたが、定休日の曜日を入力するための「繰り返しの予定」の機能が見つかりません。
当社の定休日は週末ではないので、これだと困ります。
そこで定休日は、デフォルトで土日に設定されているWeekEndを、定休日の曜日にずらすことにしました。
Kalenderスニペット内を探したら、596行目、617行目に

if($w==0 || $w==6){

とあります。
表示されるカレンダーは、日・月・・・土の順番となっていて、日曜と土曜のセルにkalender-dayWeekendクラスが設定されているので、
日・・・0
月・・・1
火・・・2
水・・・3
木・・・4
金・・・5
土・・・6
と判断し、この行を

if($w==「定休日になる曜日の数字」){

と書き換えたら、定休日になる曜日のセルの色を変えることができました。
通常の予定として入っている単発の休日とのセルの色違いは、CSSを変更して全て同じにしました。

月送りして別の月のカレンダーを表示すると、31日まであるのに30日までしか表示されない月がありました。
これにはこの投稿を参考にしました。
すると今度は、土曜日で月が終わりなのに、日曜日から始まる新しい行に翌月の第1週が下一列にすべて表示される月が出てきたので、

if($firstday==5 && $maxdays>=31){
// six rows when first day is saturday and max days is 31
$weekrows = 6;
}
else if($firstday==6 && $maxdays>=30){
// four rows when first day is sunday and max days is 30 or 31
$weekrows = 6;
}

と改変したところ、過不足なく表示されるようになりました。

英語になっている曜日表示は、スニペット内の422-434行目にある文字を直接書き換え、英語になっている年月表示も同様にスニペット内の417-418行目

<? echo $month; ?>
<? echo $yyyy; ?></td>

<? echo $yyyy; ?>年<? echo $mm; ?>月
</td>

に変更したところ、「January2013」が「2013年1月」と表示されるようになりました。