EXTRAFFIC

bulletin_cal.phpのカスタマイズ

階層メニュー ※ トップページから現在表示中のページまでの移動歴を表しています

  1. Top page
  2.  > サイトニュース
  3.  > カスタマイズ
  4.  > [ bulletin_cal.phpのカスタマイズ ]

Theme Designed by EXTRAFFIC It is 2008-7-24 4:42 that you displayed this page



カスタマイズ

カスタマイズ : bulletin_cal.phpのカスタマイズ

投稿者 : 
hi-debow  
投稿日時 : 
2008-01-12 [ 464 ヒット - 0 コメント ]
カスタマイズ

どもhi-debowです。
今日はbulletinモジュールのカレンダーブロックを表示させてみました。
このブロックは左ブロックや右ブロック等の横幅が狭い場所へ表示させると、必ずと言って良いほどはみ出してしまいデザインを崩してしまいます。
そこで狭い場所への表示でもはみ出さないようにするカスタマイズをしてみました。

このカスタマイズによる変化は、固定幅から可変幅への変更と文字サイズが小さくなるよう変更しています。
これで約170px以上の幅まではみ出さないと思います。

また、このカレンダーブロックはテンプレートを持っておらず、直接phpファイルをカスタマイズする事になります。
xoops_trust_path/modules/bulletin/class/ 以下のbulletin_cal.phpファイルへ下記の内容をコピペして下さい。もちろんオリジナルファイルのバックアップをお忘れなく。

bulletinのバージョンはbulletinHD-2.1です。

<?php

class Bulletin_Cal
{

	var $year;
	var $month;
	var $day;
	var $weekday;
	var $lang_week = array('Sun','Mon','Tue','Wed','The','Fri','Sat');
	var $link = array();
	var $title = '';
	var $timestamp;
	var $lang_p_mon = '<';
	var $lang_n_mon = '>';
	var $startday;
	var $endday;
	var $query = 'today';
	
	
	function setDate($today="", $startday=0, $endday=0)
	{
		if(preg_match('/([0-9]{4})-([0-9]{2})/', $today, $todayarr)){
			$year  = $todayarr[1];
			$month = $todayarr[2];
		}else{
			$year  = date('Y');
			$month = date('m');
		}
		
		if(!checkdate($month,1,$year)){
			$year  = date('Y');
			$month = date('m');
		}
		
		//if( !empty($startday) && $year*100+$month < intval(date('Ym',$startday))){
		//	$year  = date('Y', $startday);
		//	$month = date('m', $startday);
		//}
		
		//if( !empty($endday) && $year*100+$month > intval(date('Ym',$endday))){
		//	$year  = date('Y', $endday);
		//	$month = date('m', $endday);
		//}
		
		if( !empty($endday) && date('Ym') > intval(date('Ym',$endday))){
			$endday = time();
		}

		$weekday = intval(date('w', mktime(0,0,0,$month,1,$year)));

		$this->year      = intval( $year );
		$this->month     = intval( $month );
		$this->weekday   = intval( $weekday );
		$this->startday  = intval( $startday );
		$this->endday    = intval( $endday );
		$this->timestamp = mktime(0,0,0,$month,1,$year);
	}
	
	function setWeekName($week="")
	{
		if( is_array($week) && count($week)==7){
			$this->lang_week = $week;
			return true;
		}
		return false;
	}
	
	function setLink($day, $url)
	{
		$day = intval($day);
		$this->link[$day] = $url;
	}
	
	function setTitle($title = 'Y-m')
	{
		$this->title = date($title, $this->timestamp);
	}

	function setQueryStr($query = 'today')
	{
		$this->query = $query;
	}
	
	function getCalendar()
	{
		$w = $this->weekday;
		$m = $this->month;
		$y = $this->year;
		$d = $this->day;
		
		$ret  = array();

		for($i=0; $i<7; $i++){
			$ret[0][$i]['label'] = $this->lang_week[$i];
			$ret[0][$i]['link']  = '';
		}
		for($i=0; $i<$w; $i++){
			$ret[1][$i]['label'] = '';
			$ret[1][$i]['link']  = '';
		}

		$i = 1;
		$l = 1;
		while(checkdate($m,$i,$y)){
		
			if( isset($this->link[$i]) ){
				$ret[$l][$w]['link'] = $this->link[$i];
			}else{
				$ret[$l][$w]['link'] = '';
			}
			
			     if($w == 0){ 
				$ret[$l][$w]['label'] = $i; 
			}elseif($w == 1){ 
				$ret[$l][$w]['label'] = $i; 
			}elseif($w == 2){ 
				$ret[$l][$w]['label'] = $i; 
			}elseif($w == 3){ 
				$ret[$l][$w]['label'] = $i; 
			}elseif($w == 4){ 
				$ret[$l][$w]['label'] = $i; 
			}elseif($w == 5){ 
				$ret[$l][$w]['label'] = $i; 
			}elseif($w == 6){ 
				$ret[$l][$w]['label'] = $i; 
			}
			
			if($w == 6){
				$l++;
			}
			
			$i++;
			$w++;
			$w = $w % 7;
		}
		
		if($w > 0){
			while($w < 7){
				$ret[$l][$w]['label'] = ''; 
				$ret[$l][$w]['link']  = ''; 
				$w++;
			}
		}
		
		return $ret;
	}

	
	function getThemeCalendar()
	{
		$w = $this->weekday;
		$m = $this->month;
		$y = $this->year;
		
		$ret  = '<table class="outer">';
		$ret .= $this->getTitleBar();
		
		foreach( $this->getCalendar() as $line => $weeks ){
		
			$ret .= '<tr style="text-align: center; font-weight: nomal;">';
			foreach($weeks as $weekday){
				$style = ( $line > 0 ) ? 'even' : 'head';
				//$style = ( $style == 'even' && !empty($weekday['link']) ) ? 'odd' : $style;
				$text = empty($weekday['label']) ? '&nbsp;' : $weekday['label'] ;
				$text = empty($weekday['link'])  ? $text    : '<a href="'.$weekday['link'].'" style="font-weight: bold;">'.$text.'</a>';
				$ret .= '<td class="'.$style.'" style="font-size: 90%; padding: 1%;">'.$text.'</td>';
			}
			$ret .= '</tr>';
		
		}
		
		$ret .= '</tr></table>';
		
		return $ret;
	}
	
	function getTitleBar()
	{
		$w = $this->weekday;
		$m = $this->month;
		$y = $this->year;
		
		if( !empty($this->title)){
			$p_month = date("Y-m", mktime(0,0,0,$m,0,$y));
			$n_month = date("Y-m", mktime(0,0,0,$m+1,1,$y));

			$ret  = '<tr>';
			$ret .= '<th style="text-align: center; padding: 1%; font-weight: normal;" colspan="7">';
			if( empty($this->startday) || $y*100+$m-1 >= intval(date('Ym',$this->startday))){
				$ret .= '<a href="?'.$this->query.'='.$p_month.'">'.$this->lang_p_mon.'</a>';
			}
			$ret .= '&nbsp;&nbsp;';
			$ret .= $this->title;
			$ret .= '&nbsp;&nbsp;';
			if( empty($this->endday) || $y*100+$m+1 <= intval( date('Ym',$this->endday) ) ){
				$ret .= '<a href="?'.$this->query.'='.$n_month.'">'.$this->lang_n_mon.'</a>';
			}
			$ret .= '</th></tr>';
		}
		
		return $ret;
	}
}
?>



    印刷用ページ このニュースを友達に送る


    ▲新しくコメントをつける▲

    題名
    ゲスト名   :
    投稿本文
    より詳細なコメント入力フォームへ

    コメント一覧


    ページ上部へ移動

    Active Menu


    テーマ表示切替


    [34 テーマ]

    Site News Calendar

    <  2008年07月  
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  

    Now Online

    登録ユーザ0人と、ゲスト2人の
    合計2人が訪問中です。
    (1 人のユーザが サイトニュース を参照しています。)
    詳細を見る

    今日 :
    71
    昨日 :
    421
    今月 :
    10255
    総計 :
    200614


    Login Form



    AdSense + E.T.C


    相互リンク倶楽部リンク集

    Copyright (c) ExPiece 2006-2008

    Theme Designed by EXTRAFFIC