カテゴリ | |
---|---|
サマリ | 次月や前月のカレンダーを表示したい |
バージョン | 1.4.3 |
投稿者 | もばぎつかい |
状態 | 完了 |
投稿日 | 2004-06-19 (SAT) 14:35:23 |
FrontPageで今月と次月のカレンダーを並べて表示しています。
今月のカレンダーは
#calendar2(off)
としていますが、
次月の分は
#calendar2(off,FrontPage,200407)
としており、年月を直接指定している状況です。
しかしこのままだと、新しい月になるごとに修正しなければいけません。
これを、例えば、
#calendar??(off,FrontPage,next)
とか
#calendar??(off,FrontPage,+1)
というように指定できる他のカレンダー関係のプラグインはあるのでしょうか。
または、
#calendar2(off,FrontPage,&datecalc(now,+1,"yyyymm"))
というような日付計算のインライン型プラグインなどはあるのでしょうか。
質問箱で調べたりネット検索などしましたが、有効な情報にたどり着けませんでしたので、こちらに質問させていただきました。
よろしくお願いします。
自己レスです。calendar2.inc.phpのソースを眺めていたら、機能追加しやすそうだったので、
試しに改造してみました。
具体的には、10行目に追加
$next_view = FALSE; $pre_view = FALSE;
23行目に追加
else if ($arg == 'next') { $next_view = TRUE; } else if ($arg == 'pre') { $pre_view = TRUE; }さらに、42行目に追加
if($next_view) { if($mon == 12){ $yr++; $mon = 1; }else{ $mon++; } } if($pre_view) { if($mon == 1){ $yr--; $mon = 12; }else{ $mon--; } }
これで、引数に'next'を指定すると次月が、'pre'を指定すると前月が表示されるようになりました。
とりあえず、不具合もなく動いているようです。
気が向いたら、月数指定で何ヵ月後(前)も指定できるようにしようかと思います。
お騒がせいたしました。
自己解決されたようですが…
--- calendar2.inc.php.orig Tue Jun 3 20:59:07 2003 +++ calendar2.inc.php Sat Jun 19 15:46:54 2004 @@ -20,6 +20,14 @@ else if ($arg == 'off') { $today_view = FALSE; } + else if (preg_match('/^(\+|-)(\d+)m$/',$arg,$mp)) { + $now = getdate(); + $nmon = $now['year']*12 + $now['mon'] - 1 + +($mp[1]=='-'?-1:1)*$mp[2]; + $now['year'] = (int)( $nmon / 12); + $now['mon'] = ($nmon % 12)+1; + $date_str = $now['year'].($now['mon']<10?'0':'').$now['mon']; + } else { $base = strip_bracket($arg); }
で如何か。
アドバイスありがとうございます。
なるほど preg_match ですか。年月の計算もこうすればスマートなんですね。
勉強になりました。
自作プラグインにcalendar4ってあったんですね。はは。しっかりしろ!>俺
calendar4はv1.3.5用ですね。修正が必要ぽかったので報告しませんでした。