我在很多项目中都使用过CodeIgniter,我决定使用Calendaring Class而不是Jquery Calendar来显示每月预订。我已经设置好并显示数据FINE。
事实上,我不需要周末,在我的网页上占用了宝贵的空间。我在网上进行了研究,有些人解释说你可以在$ prefs数组中使用该模板。
我认为它与模板分析器类有关,但我无法理解它。
如果任何可以给我链接,帮助或示例,将不胜感激。
答案 0 :(得分:1)
我希望这就是你想要的。
请将MY_Calendar.php复制到您的库目录,并在控制器中粘贴此代码:
//controller
$prefs['start_day'] = 'monday';
$this->load->library('calendar',$prefs);
echo $this->calendar->generate_weekdays();
MY_Calendar.php文件:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Calendar extends CI_Calendar
{
public function __construct($config = array())
{
parent::__construct($config);
}
public function generate_weekdays($year = '', $month = '', $data = array())
{
// Set and validate the supplied month/year
if ($year == '')
$year = date("Y", $this->local_time);
if ($month == '')
$month = date("m", $this->local_time);
if (strlen($year) == 1)
$year = '200'.$year;
if (strlen($year) == 2)
$year = '20'.$year;
if (strlen($month) == 1)
$month = '0'.$month;
$adjusted_date = $this->adjust_date($month, $year);
$month = $adjusted_date['month'];
$year = $adjusted_date['year'];
// Determine the total days in the month
$total_days = $this->get_total_days($month, $year);
// Set the starting day of the week
$start_days = array('sunday' => 0, 'monday' => 1, 'tuesday' => 2, 'wednesday' => 3, 'thursday' => 4, 'friday' => 5, 'saturday' => 6);
$start_day = ( ! isset($start_days[$this->start_day])) ? 0 : $start_days[$this->start_day];
// Set the starting day number
$local_date = mktime(12, 0, 0, $month, 1, $year);
$date = getdate($local_date);
$day = $start_day + 1 - $date["wday"];
while ($day > 1)
{
$day -= 7;
}
// Set the current month/year/day
// We use this to determine the "today" date
$cur_year = date("Y", $this->local_time);
$cur_month = date("m", $this->local_time);
$cur_day = date("j", $this->local_time);
$is_current_month = ($cur_year == $year AND $cur_month == $month) ? TRUE : FALSE;
// Generate the template data array
$this->parse_template();
// Begin building the calendar output
$out = $this->temp['table_open'];
$out .= "\n";
$out .= "\n";
$out .= $this->temp['heading_row_start'];
$out .= "\n";
// "previous" month link
if ($this->show_next_prev == TRUE)
{
// Add a trailing slash to the URL if needed
$this->next_prev_url = preg_replace("/(.+?)\/*$/", "\\1/", $this->next_prev_url);
$adjusted_date = $this->adjust_date($month - 1, $year);
$out .= str_replace('{previous_url}', $this->next_prev_url.$adjusted_date['year'].'/'.$adjusted_date['month'], $this->temp['heading_previous_cell']);
$out .= "\n";
}
// Heading containing the month/year
$colspan = ($this->show_next_prev == TRUE) ? 5 : 7;
$this->temp['heading_title_cell'] = str_replace('{colspan}', $colspan, $this->temp['heading_title_cell']);
$this->temp['heading_title_cell'] = str_replace('{heading}', $this->get_month_name($month)." ".$year, $this->temp['heading_title_cell']);
$out .= $this->temp['heading_title_cell'];
$out .= "\n";
// "next" month link
if ($this->show_next_prev == TRUE)
{
$adjusted_date = $this->adjust_date($month + 1, $year);
$out .= str_replace('{next_url}', $this->next_prev_url.$adjusted_date['year'].'/'.$adjusted_date['month'], $this->temp['heading_next_cell']);
}
$out .= "\n";
$out .= $this->temp['heading_row_end'];
$out .= "\n";
// Write the cells containing the days of the week
$out .= "\n";
$out .= $this->temp['week_row_start'];
$out .= "\n";
$day_names = $this->get_day_names();
for ($i = 0; $i < 5; $i ++)
{
$out .= str_replace('{week_day}', $day_names[($start_day + $i) %7], $this->temp['week_day_cell']);
}
$out .= "\n";
$out .= $this->temp['week_row_end'];
$out .= "\n";
// Build the main body of the calendar
while ($day <= $total_days)
{
$out .= "\n";
$out .= $this->temp['cal_row_start'];
$out .= "\n";
for ($i = 0; $i < 7; $i++)
{
if($i!=5 && $i!=6)
{
$out .= ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_start_today'] : $this->temp['cal_cell_start'];
if ($day > 0 AND $day <= $total_days)
{
if (isset($data[$day]))
{
// Cells with content
$temp = ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_content_today'] : $this->temp['cal_cell_content'];
$out .= str_replace('{day}', $day, str_replace('{content}', $data[$day], $temp));
}
else
{
// Cells with no content
$temp = ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_no_content_today'] : $this->temp['cal_cell_no_content'];
$out .= str_replace('{day}', $day, $temp);
}
}
else
{
// Blank cells
$out .= $this->temp['cal_cell_blank'];
}
$out .= ($is_current_month == TRUE AND $day == $cur_day) ? $this->temp['cal_cell_end_today'] : $this->temp['cal_cell_end'];
}
$day++;
}
$out .= "\n";
$out .= $this->temp['cal_row_end'];
$out .= "\n";
}
$out .= "\n";
$out .= $this->temp['table_close'];
return $out;
}
}
/* End of file MY_Calendar.php */
由于