[原创]修改Discuz! X1.5出生日期选择器中的年份范围

最近用Discuz! X1.5做个小东西,调用其程序的日期选择器,但郁闷的是,其中的年份范围是包含本年在内的前100年,比如今年2011年,范围是:2011~1912,这个范围有点大,也有点小瑕疵!

个人需求:

1、日期选择器需要年份范围是10年;

2、年份需要比本年预期一年,比如今年2011年,年份应该选择到2012;

在Discuz论坛问啊,找啊,原来发现那句真理:求人不如求己!修改方法如下:

打开 /source/function/function_profile.php 文件,找到函数 profile_setting($fieldid, $space=array(), $showstatus=false),要实现上述需求,依次做如下修改:

1:for ($i=0; $i<100; $i++),将其中的100修改为10;

2:$nowy = dgmdate($_G['timestamp'], 'Y'),在此后+1,即能达到2012年的效果!

其它需求可查看注解即可!

$html = '';
 if($fieldid == 'birthday') {
  if($field['unchangeable'] && !empty($space[$fieldid])) {
   return '<span>'.$space['birthyear'].'-'.$space['birthmonth'].'-'.$space['birthday'].'</span>';
  }
  $birthyeayhtml = '';
  $nowy = dgmdate($_G['timestamp'], 'Y')+1;//其中的+1能达到范围比本年多一年
  
  //$i<100; 指的是年份包括今年在内的100年,如需要范围为10年,将100改为10即可!
  for ($i=0; $i<100; $i++) {
   $they = $nowy - $i;
   $selectstr = $they == $space['birthyear']?' selected':'';
   $birthyeayhtml .= "<option value=\"$they\"$selectstr>$they</option>";
  }
  $birthmonthhtml = '';//月份
  for ($i=1; $i<13; $i++) {
   $selectstr = $i == $space['birthmonth']?' selected':'';
   $birthmonthhtml .= "<option value=\"$i\"$selectstr>$i</option>";
  }
  $birthdayhtml = '';//日期,对闰年判断
  if(empty($space['birthmonth']) || in_array($space['birthmonth'], array(1, 3, 5, 7, 8, 10, 12))) {
   $days = 31;
  } elseif(in_array($space['birthmonth'], array(4, 6, 9, 11))) {
   $days = 30;
  } elseif($space['birthyear'] && (($space['birthyear'] % 400 == 0) || ($space['birthyear'] % 4 == 0 && $space['birthyear'] % 400 != 0))) {
   $days = 29;
  } else {
   $days = 28;
  }
  for ($i=1; $i<=$days; $i++) {
   $selectstr = $i == $space['birthday']?' selected':'';
   $birthdayhtml .= "<option value=\"$i\"$selectstr>$i</option>";
  }
  $html = '<select id="birthyear" name="birthyear" onchange="showbirthday();" tabindex="1">'
    .'<option value="">'.lang('space', 'year').'</option>'
    .$birthyeayhtml
    .'</select>'
    .'&nbsp;&nbsp;'
    .'<select id="birthmonth" name="birthmonth" onchange="showbirthday();" tabindex="1">'
    .'<option value="">'.lang('space', 'month').'</option>'
    .$birthmonthhtml
    .'</select>'
    .'&nbsp;&nbsp;'
    .'<select id="birthday" name="birthday" tabindex="1">'
    .'<option value="">'.lang('space', 'day').'</option>'
    .$birthdayhtml
    .'</select>';