ログイン
新規登録
パスワード紛失
メインメニュー
フォーラム
オンライン状況
20 人のユーザが現在オンラインです。 (14 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 19
hanabi41, もっと...
広告
質問 > フロント機能 > カレンダーで毎週○曜日休みの設定
フロント機能
新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
kvex2004
投稿日時: 2008-5-30 18:51
対応状況: −−−
長老
登録日: 2007-10-31
居住地: 埼玉
投稿: 205
Re: カレンダーで毎週○曜日休みの設定
やっつけ仕事で、変数の使い方にかなり問題がありますが(ヘタっぴという意味)できました。
今までの修正と同様の機能も入っていますが、整理の意味で全部書きます

【機能改良項目】
・土曜日にスタイルシートクラスを付ける

・日曜・祝日は休業日ではない、あくまでもカレンダー上の「赤い日」

・休業日はさらにスタイルシートクラスを追加

・以上により、スタイルシートは4つとなり、クラスは以下のとおり
 1)日曜祝日 = sun
 2)土曜日  = sat
 3)休業日  = off
 4)その他  = 無指定

・休業日は別途ファイルを読み込む。設定可能は以下のとおり。
 1)毎週○○曜日休業 の設定追加
 2)第○の▲曜日休業 の設定追加
 3)上記該当日でも、特別に営業する日

【スタイルシートの例】
#block-calendar .sun {
    background: #FFEECC;
    color: #E04A00;
}
#block-calendar .sat {
    background: #e6e6fa;
    color: #6495ed;
}
#block-calendar .off {
    background: #ffc0cb;
    color: #ff6347;
	font-weight: bolder;
}


【カレンダーの生成部分】
data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php
2箇所の関数を変更するので、変更関数の全ソースを掲載
    function init() {
        parent::init();
        $bloc_file = 'calendar.tpl';
        $this->setTplMainpage($bloc_file);

// カレンダーの追加初期設定
		require_once (DATA_PATH. 'calendar_conf.php');
		$this->setHoliday_w    = $cal_holiday;
		$this->setHoliday_open = $cal_open;
		$this->setHoliday_wnum = $cal_w_num;
	}


    // カレンダー情報取得
    function lfGetCalendar($disp_month = 1){

        for ($j = 0; $j <= $disp_month-1; ++$j) {
            $year = date('Y');
            $month = date('n') + $j;
            if ($month > 12) {
                $month = $month%12;
                $year = $year + $month%12;
            }

            $Month = new Calendar_Month_Weekdays($year, $month, 0);
            $Month->build();
            $i = 0;
			$z = 1; // 週
			$w_count = array(0,0,0,0,0,0,0); // 曜日毎のカウント
			
            while ($Day = $Month->fetch()) {
                
				if ($month == $Day->month) {
                    $arrCalendar[$j][$i]['in_month'] = true;
                } else {
                    $arrCalendar[$j][$i]['in_month'] = false;
                }
                $arrCalendar[$j][$i]['first'] = $Day->first;
                $arrCalendar[$j][$i]['last'] = $Day->last;
                $arrCalendar[$j][$i]['empty'] = $Day->empty;
                $arrCalendar[$j][$i]['year'] = $year;
                $arrCalendar[$j][$i]['month'] = $month;
                $arrCalendar[$j][$i]['day'] = $Day->day;

// 曜日を求めた後、曜日の出現回数をカウントする
				$w_day = date('w',mktime(0,0,0,$arrCalendar[$j][$i]['month'],$arrCalendar[$j][$i]['day'],$arrCalendar[$j][$i]['year']));
				if($arrCalendar[$j][$i]['in_month']){
					$w_count[$w_day] ++;
				}
				
// 第何週かのカウント
                if($Day->last) {
					$z ++;
                }

// 1=日曜日,2=土曜日,3=休業日,4=その他
				if ($this->lfCheckHoliday($month, $Day->day)) {
                    $arrCalendar[$j][$i]['holiday'] = 3;
                } elseif($Day->first) {
                    $arrCalendar[$j][$i]['holiday'] = 1;
                } elseif($Day->last) {
                    $arrCalendar[$j][$i]['holiday'] = 2;
                } else {
                    $arrCalendar[$j][$i]['holiday'] = 4;
                }

// 毎週○○曜日が休みの設定をオーバーライトする
				foreach($this->setHoliday_w as $chk){
					if ($w_day == $chk){
	                    $arrCalendar[$j][$i]['holiday'] = 3;
					}
				}

// 第○▲曜日が休みの設定をオーバーライトする
				if ($this->setHoliday_wnum[$w_count[$w_day]][$w_day]){
	                    $arrCalendar[$j][$i]['holiday'] = 3;
				}

// 決まった休みでも特別に営業する場合などをオーバーライトする
				foreach($this->setHoliday_open as $chk){
					$w_day = $arrCalendar[$j][$i]['year']. "-". $arrCalendar[$j][$i]['month']. "-". $arrCalendar[$j][$i]['day'];
					if ($w_day == $chk){
	                    $arrCalendar[$j][$i]['holiday'] = 4;
					}
				}

                ++$i;
            }
        }
        return $arrCalendar;
    }

【カレンダーのブロックテンプレート】
デザイン管理のブロック編集、カレンダーを改変
<!--▼カレンダーここから-->
<h2></h2>
<div id="block-calendar">
<!--{section name=num loop=$arrCalendar}-->
<!--{assign var=arrCal value=`$arrCalendar[num]`}-->
<!--{section name=cnt loop=$arrCal}-->
<!--{if $smarty.section.cnt.first}-->
<table>
<caption><!--{$arrCal[cnt].year}-->年<!--{$arrCal[cnt].month}-->月の定休日</caption>
<thead><tr><th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th></tr></thead>
<!--{/if}-->
<!--{if $arrCal[cnt].first}-->
<tr>
<!--{/if}-->
<!--{if !$arrCal[cnt].in_month}-->
<td></td>
<!--{elseif $arrCal[cnt].holiday == 1}-->
<td class="sun"><!--{$arrCal[cnt].day}--></td>
<!--{elseif $arrCal[cnt].holiday == 2}-->
<td class="sat"><!--{$arrCal[cnt].day}--></td>
<!--{elseif $arrCal[cnt].holiday == 3}-->
<td class="off"><!--{$arrCal[cnt].day}--></td>
<!--{else}-->
<td><!--{$arrCal[cnt].day}--></td>
<!--{/if}-->
<!--{if $arrCal[cnt].last}-->
</tr>
<!--{/if}-->
<!--{/section}-->
<!--{if $smarty.section.cnt.last}-->
</table>
<!--{/if}-->
<!--{/section}-->
</div>
<!--▲カレンダーここまで-->

【設定ファイルを追加】
data/calendar_conf.php
<?php
/*******************************
 ■営業日カレンダー設定ファイル

 Programed at 2008.05.30
 
 http://www.naviwave.com/
 Kazuhisa Katoh

********************************/

// 毎週○○曜日休みの設定。カンマで区切ってください。
	$cal_holiday = array(3,4); // 0=日曜〜 7=土曜

// 第○▲曜日の設定
// $cal_w_num[第○][曜日0〜7]
// 例)$cal_w_num[1][2]; 第1火曜日
// 必要数だけ追加してください
	$cal_w_num[2][2] = true;
	$cal_w_num[4][2] = true;

// 営業日の設定。毎週休みを設定した場合などで、特別に営業する場合など。
// カンマで区切ってください。
	$cal_open = array(
	'2008-6-11',
	'2008-6-25',
	);

?>


----------------
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
WEB アプリケーション開発
WEB サイト作成
naviwave.com
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

フラット表示 前のトピック | 次のトピック

EC-CUBE ASP登場
題名 投稿者 日時
   カレンダーで毎週○曜日休みの設定 ゲスト 2008-5-27 16:47
     Re: カレンダーで毎週○曜日休みの設定 ゲスト 2008-5-27 16:56
       Re: カレンダーで毎週○曜日休みの設定 x41 2008-5-27 20:20
         Re: カレンダーで毎週○曜日休みの設定 ゲスト 2008-5-27 21:56
           Re: カレンダーで毎週○曜日休みの設定 ゲスト 2008-5-28 11:38
             Re: カレンダーで毎週○曜日休みの設定 ゲスト 2008-5-28 12:46
               Re: カレンダーで毎週○曜日休みの設定 kvex2004 2008-5-28 12:48
                 Re: カレンダーで毎週○曜日休みの設定 ゲスト 2008-5-28 18:16
                   Re: カレンダーで毎週○曜日休みの設定 kvex2004 2008-5-28 21:23
                     Re: カレンダーで毎週○曜日休みの設定 koba63 2008-5-29 10:51
                       Re: カレンダーで毎週○曜日休みの設定 kvex2004 2008-5-29 16:45
                         Re: カレンダーで毎週○曜日休みの設定 koba63 2008-5-29 17:58
                           Re: カレンダーで毎週○曜日休みの設定 ゲスト 2008-5-30 7:31
                             Re: カレンダーで毎週○曜日休みの設定 kvex2004 2008-5-30 10:56
                               Re: カレンダーで毎週○曜日休みの設定 ゲスト 2008-5-30 17:49
                                 Re: カレンダーで毎週○曜日休みの設定 kvex2004 2008-5-30 17:58
                                 » Re: カレンダーで毎週○曜日休みの設定 kvex2004 2008-5-30 18:51
                                     Re: カレンダーで毎週○曜日休みの設定 kvex2004 2008-5-30 18:54
                                       Re: カレンダーで毎週○曜日休みの設定 koba63 2008-5-31 2:12
                                         Re: カレンダーで毎週○曜日休みの設定 noosa 2008-9-27 16:20
                                           Re: カレンダーで毎週○曜日休みの設定 tonton 2008-9-27 18:01
                                             Re: カレンダーで毎週○曜日休みの設定 hiroky 2008-9-29 1:44

 
EC-CUBEダウンロード
正式版(zip版) 正式版(tar.gz版)
パートナー募集
構築事例募集
EC-CUBE寄付支援プロジェクト
リンク
投稿数ランキング
1
seasoft
4925
2 ramrun 789
3
AMUAMU
787
4
nanasess
722
5
homan
547
6 tonton 435
7
kishik
381
8
tao_s
334
9 x41 299
10
ecbg
297
11
DDR
259
12 arts 227
13 pineray 208
14
kvex2004
205
15
flealog
184
16
DELIGHT
142
17
mahalo_c
136
18 nanakoko 135
19 popo 126
20 kurobon 116
21
yokoshima
113
22
Oba
106
23
takoyaki
105
24 lvsa 104
25
lucky7
101
26 mi-taro 100
27 it3 92
28
sakurai07
88
29
illfrog300
88
30
kaoring777
87
31
ryo
86
32 tao 82
33 tmtqn543 82
34 mkhkck 79
35 bott 78
36 hunterman 78
37
saratoga
76
38
vexit
70
39
asayama
68
40
osamusi
66
41 kana 64
42
kishimoto
63
43 harutom 63
44
lockon_admin
62
45 fsv_g2 61
46 NSX 61
47 Masashige 61
48 fukuma 60
49 kctakeyama 60
50 Linux-user 59
Copyright© LOCKON CO.,LTD. All Rights Reserved.