2016-11-26 92 views
0

我做了一個方法,寫一個日曆表的方法,該日曆表使用日曆類顯示一年的所有月份。日曆自定義[突出顯示當前月份]

控制器:

<?php 

class Calendar extends CI_Controller { 

    public function this_year() { 
     $data['title'] = 'Calendar: ' . date('Y'); 
     $this->load->library('calendar'); 
     $prefs = array(
      'local_time' => 'none', 
      'start_day' => 'sunday', 
      'month_type' => 'long', 
      'day_type' => 'short', 
      'show_next_prev' => FALSE, 
      'show_other_days' => TRUE, 
      'template' => ' 
     {table_open}<table class="table table-condensed">{/table_open} 
     {heading_row_start}<tr class="info">{/heading_row_start} 
     {cal_cell_start_today}<td class="today">{/cal_cell_start_today} 
     {cal_cell_start_other}<td class="other-day">{/cal_cell_start_other} 
    ' 
     ); 
     $this->load->library('calendar', $prefs); 
     $data['calendar'] = '<table class="table-calendar"><tr>'; 
     for ($i = 1; $i <= 12; $i++) { 
      if ($i % 3 == 0) { 
       $data['calendar'].= "<td>{$this->calendar->generate(date('Y'), $i)}</td>"; 
       $data['calendar'].= '</tr><tr>'; 
      } 
      else { 
       $data['calendar'].= "<td>{$this->calendar->generate(date('Y'), $i)}</td>"; 
      } 
     } 
     $data['calendar'].= '</tr></table>'; 
     $this->template->load('template/index', __CLASS__ . "/" . __FUNCTION__, $data); 
    } 

} 

*上觀看,只是回聲 '$日曆'

它的工作原理,以及,並返回this

但我沒有找到一種方法來只使用日曆類中的模板來突出顯示當前月份。我試圖修改默認模板,但它不起作用,因爲當我更改{heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}的類時,它會修改所有月份的標籤,如this

我使用基本類教程中的默認方法(相同的代碼)。任何建議?

+0

添加一些代碼...你可能需要做一些PHP添加有條件類:例如對於一月:'<?php if(date('n')== 1){$ cssClass ='active'; }?>' 然後將樣式應用到'.heading_row_start.active' – reinder

+0

嘿@reinder,感謝您的關注。我添加了我的控制器源代碼。我在想,要做這樣的事情,我需要修改CodeIgniter的核心。我更喜歡使用本地方法或使用自己的代碼在應用程序上下文中擴展本地類/方法。任何意見幫助? :) – ShutUpMagda

回答

0

有可能extendCI_Calendar強制方法generate()將他的$month變量傳遞給parse_template()方法。然後,parse_template($month)將能夠應用例外在解析上{heading_row_start}<tr>{/heading_row_start}申報模板:

CI_Calendar::parse_template($month), 483

if($val == 'heading_row_start'){ 
    if($month == date('m')){ 
    $this->replacements[$val] = '<tr class="info">'; 
    } 
} 
else{ 
    $this->replacements[$val] = $match[1]; 
} 
相關問題