没研究过 Tpthink 5 ,简单看了下苹果CMS ,只能说老王很懒,要么故意的,要么就老王写代码确实NB,开源程序竟然都不写注释的。
让得别人很难读懂,某段PHP什么作用。
今天闲余看了下,给苹果CMS加上年代范围筛选(如90年代:1990-1999 或者 2000 - 2010)
(版本时间:2018.05.07,后续老王是否会加上就不知晓了)
修改路径:(修改前备份源文件)
/application/common/model/Vod.php (220行左右)
$where['vod_year'] = ['in',explode(',',$year)];
更改为
$year = implode(',',str_split($year,4));
$h2_year = explode(',',$year);
if (count($h2_year) > 1) {
$where['vod_year'] = ['between',$h2_year[0].','.$h2_year[1]];
}else{
$where['vod_year'] = ['in',$h2_year];
}
模板应用代码
template/default_pc/html/vod/show.html (73行下方)
不要写在循环语句内
<li><a {if condition="$param['year'] eq 20002010"} class="current" {/if} href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>'20002010','level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$param['class'],'order'=>$param['order'],'by'=>$param['by'] ],'show')}">2000-2010</a></li>
<li><a {if condition="$param['year'] eq 19901999"} class="current" {/if} href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>'19901999','level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$param['class'],'order'=>$param['order'],'by'=>$param['by'] ],'show')}">90年代</a></li>
<li><a {if condition="$param['year'] eq 18001989"} class="current" {/if}href="{:mac_url_type($obj,['area'=>$param['area'],'lang'=>$param['lang'],'year'=>'18001989','level'=>$param['level'],'letter'=>$param['letter'],'state'=>$param['state'],'tag'=>$param['tag'],'class'=>$param['class'],'order'=>$param['order'],'by'=>$param['by'] ],'show')}">更早</a></li>
2018.5.8更新
老王更新了年代范围搜索。
直接在后台扩展里填上想要的范围,如: 1990-1999
(不支持中文,要想像上面那样含中文的,还是 按我上面那样改吧)
5.8版的在235行左右
因为这个版本已经作了判断,不过其语法不严谨,其只判断了4个字符的和9个字符的,没做其他数量字符的处理。需要另作判断:
在147行左右
if(!empty($param['year'])){
if(strlen($param['year'])==4){
$year = intval($param['year']);
}
elseif(strlen($param['year'])==9){
$tmp = explode('-',$param['year']);
$s1 = intval($tmp[0]);$s2 = intval($tmp[1]);
if($s1>$s2){
$s1 = intval($tmp[1]);$s2 = intval($tmp[2]);
}
$tmp=[];
for($i=$s1;$i<=$s2;$i++){
$tmp[] = $i;
}
$year = join(',',$tmp);
}
改为
if(!empty($param['year'])){
if(strlen($param['year'])==4){
$year = intval($param['year']);
}
elseif(strlen($param['year'])==9){
$tmp = explode('-',$param['year']);
$s1 = intval($tmp[0]);$s2 = intval($tmp[1]);
if($s1>$s2){
$s1 = intval($tmp[1]);$s2 = intval($tmp[2]);
}
$tmp=[];
for($i=$s1;$i<=$s2;$i++){
$tmp[] = $i;
}
$year = join(',',$tmp);
}else{
$year = intval($param['year']);
}
}
附图:两个修改位置