日歷類
日歷類可以讓你動態(tài)創(chuàng)建日歷.并且用日歷模板對創(chuàng)建的日歷格式化,100%的控制它的樣式.另外,你可以傳送數(shù)據(jù)到你的日歷單元格中(比如創(chuàng)建一個鏈接).
初始化類
和大多數(shù)其他CI中的類一樣,在控制器中初始化日歷類用$this->load->library函數(shù):
$this->load->library('calendar');
導(dǎo)入之后,日歷類可以這樣使用: $this->calendar
顯示一個日歷
這是一個簡單的例子告訴你如何去顯示一個日歷:
$this->load->library('calendar');
echo $this->calendar->generate();
上面的代碼將根據(jù)你服務(wù)器時間創(chuàng)建一個當前月/年的日歷. 要顯示一個指定月和年的日歷,你要傳遞這些信息到日歷生成函數(shù):
$this->load->library('calendar');
echo $this->calendar->generate(2006, 6);
上面的代碼將創(chuàng)建一個顯示2006年6月的日歷.第一個參數(shù)指定了年,第二個參數(shù)指定了月.
傳數(shù)據(jù)到單元格
增加數(shù)據(jù)到日歷的單元格就要創(chuàng)建一個關(guān)聯(lián)數(shù)組,在這個數(shù)組中索引是你想鏈接的天數(shù)value值包含你要傳入的值.數(shù)組通過日歷創(chuàng)建函數(shù)的第三個參數(shù)被傳入. 參考下面這個例子:
$this->load->library('calendar');
$data = array(
???????????????3? => 'http://example.com/news/article/2006/03/',
???????????????7? => 'http://example.com/news/article/2006/07/',
???????????????13 => 'http://example.com/news/article/2006/13/',
???????????????26 => 'http://example.com/news/article/2006/26/'
?????????????);
echo $this->calendar->generate(2006, 6, $data);
使用上面的例子,天數(shù)3,7,13和26將變成鏈接指向你提供的URLs.
注意: 默認情況,系統(tǒng)假定你的數(shù)組中已經(jīng)包含了鏈接. 在下面解釋日歷模板部分你會看到你可以自定義數(shù)據(jù)如何被傳入日歷單元格以便你可以傳不同類型的信息.
設(shè)置偏好
有 7 種偏好可以讓你設(shè)置日歷的各個方面. 偏好被設(shè)置成數(shù)組通過導(dǎo)入函數(shù)的第二個參數(shù)被導(dǎo)入. 下面是一個例子:
$prefs = array (
???????????????'start_day'??? => 'saturday',
???????????????'month_type'?? => 'long',
???????????????'day_type'???? => 'short'
?????????????);
$this->load->library('calendar', $prefs);
echo $this->calendar->generate();
上面的代碼將從禮拜六開始,用"長"月標題和"短"天數(shù)格式.更多關(guān)于偏好的信息請看下面.
Preference | Default?Value | Options | Description |
---|---|---|---|
template | None | None | 模板字符串. See the template section below. |
local_time | time() | None | A Unix timestamp corresponding to the current time. |
start_day | sunday | 一周內(nèi)的任一天(sunday,monday,ect.) | 指定每周的第一天 |
month_type | long | long, short | 月份的顯示樣式.long = January, short = Jan. |
day_type | abr | long, short, abr | 星期的顯示樣式long = Sunday, short = Sun, abr = Su. |
show_next_prev | FALSE | TRUE/FALSE (boolean) | 是否顯示“上個月”和“下個月”鏈接. |
next_prev_url | None | A URL | “上個月”和“下個月”鏈接地址. |
顯示下一月/上一月鏈接
要讓你的日歷通過下一月/上一月鏈接動態(tài)的減少/增加,可以仿照下面的例子建立你的日歷:
$prefs = array (
???????????????'show_next_prev'??=> TRUE,
???????????????'next_prev_url'?? => 'http://example.com/index.php/calendar/show/'
?????????????);
$this->load->library('calendar', $prefs);
echo $this->calendar->generate($this->uri->segment(3), $this->uri->segment(4));
在上面的例子中,你會注意到這幾點:
- 你必須把"show_next_prev"設(shè)置成TRUE.
- 你必須在"next_prev_url"偏好中向日歷提供 URL.
- 你必須向日歷創(chuàng)建函數(shù)提供"年"和"月"通過他們應(yīng)該出現(xiàn)的URI段 (注意: 日歷類自動添加年/月到你提供的base URL上.).
創(chuàng)建一個日歷模板
通過創(chuàng)建一個日歷模板你能夠100%的控制界面設(shè)計. 日歷的每一部分都要被放在一對偽變量中,像下面這樣:
$prefs['template'] = '
???{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}
';
$this->load->library('calendar', $prefs);
echo $this->calendar->generate();
?