CI_Calendar
カレンダーを描画するライブラリクラスです。
出力フォーマットはある程度カスタマイズ可能です。また、言語ファイルを設置することで多言語化対応も可能です。
CI_Calendarクラスのロード
「CI_Loader」クラスの「library()」メソッドで「CI_Calendar」クラスをロードします。
第二引数には、「CI_Calendar」クラスを初期化するための設定情報を指定することができます。
指定しない場合はデフォルト設定値が適用されます。
- デフォルトロード
- 初期化設定項目
- 初期化設定を指定
設定項目 | デフォルト | 設定値 | 説明 |
---|---|---|---|
template | (テンプレート説明参照のこと) | ||
local_time | time() | タイムスタンプ値 | カレンダーの今日の日付を示すタイムスタンプ値 |
start_day | sunday | sunday, monday, tuseday, wednesday, thursday, friday, saturday | 週の開始曜日 |
month_type | long | long, short | 月を表わす文字列の形式 |
day_type | abr | long, short, abr | 曜日を表わす文字列の形式 |
show_next_prev | FALSE | TRUE, FALSE | 前月・次月のリンク表示設定 |
next_prev_url | N/A | URI | 前月・次月のリンクの基準パス |
'month_typ' => 'short'
)
$this->load->library('calendar', $config);
カレンダーの描画
「CI_Calendar」クラスをロードすると、「$this->calendar」として「CI_Calendar」のインスタンスにアクセスすることができます。
generate($year = '', $month = '', $data = array())
カレンダーを表わす文字列を返します。引数を指定しない場合は、現在の日付を基にカレンダーが生成されます。
第一引数に「年」、第二引数に「月」を指定することができます。また、第三引数には日付にリンクを付けるためのデータを指定することができます。
10 => '/event/2012/4/10/',
15 => '/event/2012/4/15/',
);
$cal = $this->calendar->generate(2012, 4, $data);
カレンダーのテンプレートカスタマイズ
「CI_Calendar」ライブラリクラスのカレンダーテンプレートは特殊なフォーマットになっています。
「{タグキー}」と「{/タグキー}」の間に対応するHTMLタグを記述します。また、「{previous_url}」と「{next_url}」は
前月・次月のリンクに置換され、「{colspan}」は前月・次月リンクがある場合は「7」、
無い場合は「5」に置換されます。 「{heading}」は月 年に置換され、「{week_day}」は曜日に、
「{day}」は日付、「{content}」は日付リンクに置換されます。
以下が、デフォルトのテンプレートとなります。
{table_open}<table border="0" cellpadding="0" cellspacing="0">{/table_open} {heading_row_start}<tr>{/heading_row_start} {heading_previous_cell}<th><a href="{previous_url}"><<</a></th>{/heading_previous_cell} {heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell} {heading_next_cell}<th><a href="{next_url}">>></a></th>{/heading_next_cell} {heading_row_end}</tr>{/heading_row_end} {week_row_start}<tr>{/week_row_start} {week_day_cell}<td>{week_day}</td>{/week_day_cell} {week_row_end}</tr>{/week_row_end} {cal_row_start}<tr>{/cal_row_start} {cal_cell_start}<td>{/cal_cell_start} {cal_cell_content}<a href="{content}">{day}</a>{/cal_cell_content} {cal_cell_content_today} <div class="highlight"><a href="{content}">{day}</a></div> {/cal_cell_content_today} {cal_cell_no_content}{day}{/cal_cell_no_content} {cal_cell_no_content_today}<div class="highlight">{day}</div>{/cal_cell_no_content_today} {cal_cell_blank} {/cal_cell_blank} {cal_cell_end}</td>{/cal_cell_end} {cal_row_end}</tr>{/cal_row_end} {table_close}</table>{/table_close}
上記テンプレートの黒文字のHTMLタグが自由にカスタマイズ可能です。
テンプレート適用
テンプレートを適用するには、「CI_Calendar」クラスをロードする際に設定項目の一つとして引数に指定します。
$this->load->library('calendar', $config);
ソースコード内にテンプレートを記述すると見苦しいので、別ファイルに記述する方が良いかもしれません。
- TEXTファイルでテンプレートを作成
- テンプレートファイル読込
$this->load->library('calendar', $config);
カレンダーの多言語対応
カレンダーの「月」と「曜日」の表記を多言語化することができます。多言語対応には「CI_Lang」クラスを利用することになります。
多言語化するには、まず、「system/language/english/calendar_lang.php」言語ファイルを「application/language/言語/」ディレクトリにコピーし編集します。
- application/language/japanese/calendar_lang.php
$ vim application/language/japanese/calendar_lang.php
: $lang['cal_sun'] = '日'; $lang['cal_mon'] = '月'; $lang['cal_tue'] = '火'; $lang['cal_wed'] = '水'; $lang['cal_thu'] = '木'; $lang['cal_fri'] = '金'; $lang['cal_sat'] = '土'; :
静的に言語を設定するには、「application/config/config.php」設定ファイルの「$config['language'] 」で設定します。
また、動的に言語を切り替えるには、コントローラなどから「generate()」メソッドを実行する前に「CI_Config」クラスの「set_item()」
メソッドで言語を指定します。
- 動的に言語を指定
$cal = $this->calendar->generate();