**[[続・質問箱/222]] [#id567c1c]
#author("2018-03-11T12:52:48+09:00;2004-08-21T01:00:23+09:00","","")
**[[質問箱/2222]] [#id567c1c]
|RIGHT:70|LEFT:410|c
|~カテゴリ||
|~サマリ|次月や前月のカレンダーを表示したい|
|~バージョン|1.4.3|
|~投稿者|[[もばぎつかい]]|
|~状態|完了|
|~投稿日|&new{2004-06-19 (SAT) 14:35:23};|
***質問 [#c2501cd9]
~FrontPageで今月と次月のカレンダーを並べて表示しています。
~今月のカレンダーは
 #calendar2(off)
としていますが、~
~次月の分は~
 #calendar2(off,FrontPage,200407)
としており、年月を直接指定している状況です。~
~しかしこのままだと、新しい月になるごとに修正しなければいけません。~
~これを、例えば、
 #calendar??(off,FrontPage,next)
とか
 #calendar??(off,FrontPage,+1)
というように指定できる他のカレンダー関係のプラグインはあるのでしょうか。~
~または、
 #calendar2(off,FrontPage,&datecalc(now,+1,"yyyymm"))
というような日付計算のインライン型プラグインなどはあるのでしょうか。~
~質問箱で調べたりネット検索などしましたが、有効な情報にたどり着けませんでしたので、こちらに質問させていただきました。~
~よろしくお願いします。
***回答 [#dabf82b6]
-[[もばぎつかい]] &new{2004-06-19 (SAT) 15:23:48};
~自己レスです。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'を指定すると前月が表示されるようになりました。~
~とりあえず、不具合もなく動いているようです。~
~気が向いたら、月数指定で何ヵ月後(前)も指定できるようにしようかと思います。~
~お騒がせいたしました。~
-[[名無しさん]] &new{2004-06-19 (SAT) 15:49:03};
~自己解決されたようですが…
 --- 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);
             }

で如何か。
--[[もばぎつかい]] &new{2004-06-19 (SAT) 17:56:47};
~アドバイスありがとうございます。~
~なるほど preg_match ですか。年月の計算もこうすればスマートなんですね。~
~勉強になりました。~
-[[もばぎつかい]] &new{2004-06-20 (SUN) 23:36:39};
~自作プラグインにcalendar4ってあったんですね。はは。しっかりしろ!>俺
--[[さばぞう]] &new{2004-06-21 (MON) 00:15:23};
~calendar4はv1.3.5用ですね。修正が必要ぽかったので報告しませんでした。

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.055 sec.

OSDN