帝国cms的灵动标签,如何知道选到了多少条数据呢? 很简单,在灵动标签结尾[/e:loop]后面可以用$bqno来知道选到的数据数。如果没有数据,想显示“暂无内容”,可以用以下代码:
<?php
if($bqno==0)
{
?>
暂无内容
<?php
}
?> 但是对于万能标签,$no变量确暴露不出来,没有办法知道执行的情况。看看代码(/e/class/t_functions.php):
//带模板的标签
function sys_GetEcmsInfo($classid,$line,$strlen,$have_class=0,$enews=0,$tempid,$doing=0,$ewhere='',$eorder=''){
global $empire,$public_r;
$sql=sys_ReturnBqQuery($classid,$line,$enews,$doing,$ewhere,$eorder);
if(!$sql)
{return "";}
//取得模板
$tr=sys_ReturnBqTemp($tempid);
if(empty($tr['tempid']))
{return "";}
$listtemp=str_replace('[!--news.url--]',$public_r[newsurl],$tr[temptext]);
$subnews=$tr[subnews];
$listvar=str_replace('[!--news.url--]',$public_r[newsurl],$tr[listvar]);
$rownum=$tr[rownum];
$formatdate=$tr[showdate];
$docode=$tr[docode];
//替换变量
$listtemp=ReplaceEcmsinfoClassname($listtemp,$enews,$classid);
if(empty($rownum))
{$rownum=1;}
//字段
$ret_r=ReturnReplaceListF($tr[modid]);
//列表
$list_exp="[!--empirenews.listtemp--]";
$list_r=explode($list_exp,$listtemp);
$listtext=$list_r[1];
$no=1;
$changerow=1;
while($r=$empire->fetch($sql))
{
$r[oldtitle]=$r[title];
//替换列表变量
$repvar=ReplaceListVars($no,$listvar,$subnews,$strlen,$formatdate,$url,$have_class,$r,$ret_r,$docode);
$listtext=str_replace("<!--list.var".$changerow."-->",$repvar,$listtext);
$changerow+=1;
//超过行数
if($changerow>$rownum)
{
$changerow=1;
$string.=$listtext;
$listtext=$list_r[1];
}
$no++;
}
//多余数据
if($changerow<=$rownum&&$listtext<>$list_r[1])
{
$string.=$listtext;
}
$string=$list_r[0].$string.$list_r[2];
echo $string;
} 在//多余数据 后插入一句
$_POST['jhcno']=$no-1; 则可以这样调用条数: [ecmsinfo]0,10,32,0,3,2,0,"id='155'"[/ecmsinfo] 《有多少条信息呢?》<?=$_POST['jhcno']?>
|