有朋友在帝国论坛提出了这个问题---帝国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,我们无法保持我们的变量。
|