有朋友在帝国论坛提出了这个问题---帝国cms列表页如何按照日期分组展示。jiuhecai给出了这样的答案:
在列表模板的上部分
...<td><?$jhctime=0;?>[!--empirenews.listtemp--] <!--list.var1--> [!--empirenews.listtemp--]</ul> <table width="100%" border="0" cellspacing="0" cellpadding="0">...
在列表模板的下集
$pad='</ul>'; if($GLOBALS['jhctime']==0)$pad=''; if(date('Ymd',$GLOBALS['jhctime'])<>date('Ymd',$r[newstime])){ $jhc=$pad.'<div><b>'.date('Y年m月d日',$r[newstime]).'(星期'.mb_substr( "日一二三四五六",date("w",$r[newstime]),1,"utf-8" ).')</b></div><ul>'; $GLOBALS['jhctime']=$r[newstime]; } $befrom=$empire->gettotal("select befrom as total from {$dbtbpre}ecms_{$class_r[$r[classid]][tbname]}_data_{$r[stb]} where id={$r[id]} limit 1"); $listtemp=$jhc.'<li><a href="[!--titleurl--]" title="[!--oldtitle--]">【来源:'.$befrom.'】[!--title--]</a> <span>[!--newstime--]-</span></li>';
效果图:
如果是在灵动标签中,要取得这么一个效果,问题更加简单:
[e:loop={0,10,3,0}] <? $jhc=''; if(date('Ymd',$jhctime)<>date('Ymd',$bqr[newstime])){ $jhc='<div><b>'.date('Y年m月d日',$bqr[newstime]).'(星期'.mb_substr( "日一二三四五六",date("w",$bqr[newstime]),1,"utf-8" ).')</b></div>'; $jhctime=$bqr[newstime]; } ?> <?=$jhc?><a href="<?=$bqsr['titleurl']?>" target="_blank"><?=$bqr['title']?></a> <br> [/e:loop]
这是因为,帝国cms 的灵动标签,是翻译成php代码直接执行的。不同于在列表模板中,那里的下部代码是在一个函数中执行的,不用$GLOBALS,我们无法保持我们的变量。