[原创]修改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>' .' ' .'<select id="birthmonth" name="birthmonth" onchange="showbirthday();" tabindex="1">' .'<option value="">'.lang('space', 'month').'</option>' .$birthmonthhtml .'</select>' .' ' .'<select id="birthday" name="birthday" tabindex="1">' .'<option value="">'.lang('space', 'day').'</option>' .$birthdayhtml .'</select>';