過去ログ NO.1125143134
□ lemon [2005年08月22日16時49分]初めまして、lemonと申します。 A-Nickyのカレンダー表示について質問させて下さい。 トップページのカレンダー表記を 日曜日始まりではなく、月曜日が左端に来るような 設定にすることは出来ますでしょうか? cgiの中身を見てそれらしき場所を探してみたのですが 見つけることが出来ませんでした。 もし方法があるのであれば、お教え願います。 設置したcgiのurlとpassが必要であれば、 追記致します。
□ NXer [2005年08月22日21時56分] はじめまして、lemonさん。NXerです。
>月曜日が左端に
ローカルサーバで試してみました。そちらでも 週末が暦の週末になると思います。変更A-Nicky で書き込みテストをした最初のメモです。
------------------------------曜日day 日付date 1 曜日の配列の順を変更 2 最初の週で曜日に対応する日付が無い日の処理 3 月曜日と日曜日の文字色の変更 -----------------------------------
上の3点のそれぞれの >それらしき場所を 行番号で示し、変更元と変更後のスクリプトを併記します。 行番号は当方のいろんな編集コメントが加わっていますので 前後を探してください。ラウンジでは、HTML文書になるため そのままをコピーペーストすると、空白に全角が入り エラーになる恐れがあります。見やすくするためインデント していますが、崩れるかもしれません。要点を朱書して 何をしているのか、を見失なわなければ、多分成功すると思います。 願望100%ですが。
以上です。 ********************スクリプト****** #印はすえぽんさんの元スクリプト
# 曜日配列順変更 Sunday rightmost 136 #@wday = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); 137 @wday = ('Mon','Tue','Wed','Thu','Fri','Sat','Sun');
◇◇ 以下の説明のために配列順番号をメモします。◇◇ ('Mon','Tue','Wed','Thu','Fri','Sat','Sun') ----0-----1----2-----3------4----5------6つまり日曜日は[6] と考えます。さて、[5]は土曜日ですね。月曜日は[1]では なくて[0]です。月曜からはじめますからこれも使います。
289 foreach (@wday) { 290 #■$wday[6] sunday 配列順変、目的は6日曜日の色指定 291 if ($_ eq $wday[6]) { $_ = "<font color=$sun_col>$_</font>"; } 292 if ($_ eq $wday[5]) { $_ = "<font color=$sat_col>$_</font>"; }
298 #■ $i=0; 左へ1曜日分ずらす、ずらした分は空白を304で表示しない 299 $i = -1; 300 if ($obj_wday) { 301 print "<tr bgcolor=$cell_col>\n"; 302 while ($obj_wday --) { 303 if ($i !=-1){ 304 print "<td><br></td>";} 305 $i ++; 306 } 307 }
月曜日が左へ1こま移動、その分日付も左は移動。299で初期値をー1にします。 303 で 最初は何もしないで直ちに305 1日加算。次からたとえば 9月は月~水のところに、304で空白のセルを作成。
310 while ($in{'mon'} - 1 == $obj_mon) { 311 #■ $i == 0 rightmost sunday to rightmost monday 変更 312 if ($i == 0) { 313 print "<tr bgcolor=$cell_col>"; 314 $obj_date = "<tt>$obj_day</font></tt>";} 315 elsif ($i == 5) { $obj_date = "<tt><font color=$sat_col>$obj_day</font><316 /tt>"; } 317 #■ $i == 6 rightmost sunday to leftmost monday 変更 318 elsif ($i == 6) { $obj_date = "<tt><font color=$sun_col>$obj_day</font><319 /tt>"; 320 } 321 else { $obj_date = "<tt>$obj_day</tt>"; }
312 で月曜日を左端にして初めの表列trタグなどで書き出します。 314 は通常の日付表示 315 は土曜日でそのまま。 318 は日曜日の処理、上の土曜日と同じスクリプト形式。
なお、315-316 318-319は実際は連続する1行です。 ファイル名は、そのつどa-nicky1.cgiなどとします。 初期設定中のスクリプト名も変更して、まず曜日の順の変更だけ を試すなどするほうが、ミスは少ないかも知れません。
スクリプトの意味はperlという言語のため、解説は割愛します。 コロン(;)や elsif (elseifではない) if文中では ==で =を2度使います。そちらのcgi歴が不明のため、当方のミスしやす いこと(苦笑)を付記しました。失礼します。
□ lemon [2005年08月22日23時35分]NXerさん、ご返答どうもありがとうございます。 教えて頂いた通りに直しましたところ、成功致しました! 丁寧に解説して頂き、本当にどうもありがとうございました。
|
|