- A+
帝国cms列表页调用tag标签
$tbname=$class_r[$r[classid]][tbname];
$fb=$r[stb];
$ftbname=$dbtbpre."ecms_".$tbname."_data_".$fb;
$jhcr['infotags'] = $empire->gettotal("select infotags as total from $ftbname where id='$r[id]'");
$GLOBALS['navinfor']=$jhcr;
ob_start();
sys_eshowtags('selfinfo',10,0,'',0,'',' ',0,'','tagname');
$tags=ob_get_clean();
$listtemp='<li>
<div class="img"> <a href="[!--titleurl--]" title="[!--title--]"><img src="[!--titlepic--]" alt="[!--title--]"></a> </div>
<div class="imgr">
<h2><a href="[!--titleurl--]">[!--title--]</a></h2>
<p> [!--smalltext--]...</p>
<div class="info"> <span><a href="[!--this.classlink--]"><i class="fa fa-columns"></i>[!--this.classname--]</a></span> <span><i class="fa fa-clock-o"></i>[!--newstime--]</span> <span><i class="fa fa-eye"></i>[!--onclick--]</span> <span><i class="fa fa-comments"></i>[!--plnum--]</span> <span class="tag">'.$tags.'</span> </div>
</div>
</li>';
在帝国的cm的列表页中如何调用信息tags呢?
在内容页,jiuhecai可以使用tags标签:[showtags]'selfinfo',10,0,'',0,'',' ',0,'','tagname'[/showtags]来调用 当前信息中的tags并且带连接。
要是在列表页中也可以这样调用就漂亮了,然并卵。列表页下部不支持标签。那就只好写代码了。
有以下考虑:
- tags信息在副表中,要从数据库中调用;
- 最好还是用帝国的原生tags函数,这样伪静态什么的包容性好些。
第一个问题:
- $tbname=$class_r[$r[classid]][tbname];
- $fb=$r[stb];
- $ftbname=$dbtbpre."ecms_".$tbname."_data_".$fb;
- $jhcr['infotags'] = $empire->gettotal("select infotags as total from $ftbname where id='$r[id]'");
- $GLOBALS['navinfor']=$jhcr;
第二个问题
- ob_start();
- sys_eshowtags('selfinfo',10,0,'',0,'',' ',0,'','tagname');
- $tags=ob_get_clean();
- $listtemp='<li><a href="[!--titleurl--]" title="[!--oldtitle--]">[!--title--]</a>
- <span style="float:right">Tags: <i>'.$tags.'</i></span></li>';
说明下,showtags标签对应的函数就是
- //显示TAGS
- function sys_eShowTags($cid,$num=0,$line=0,$order='',$isgood='',$isgoodshow='',$showjg='',$shownum=0,$cs='',$vartype=''){
- global $empire,$dbtbpre,$public_r,$navinfor;
- $str='';
- if(empty($showjg))
- {
- $showjg=' ';
- }
- $ln=0;
- if($cid=='selfinfo')
- {
- if(empty($navinfor['infotags']))
- {
- return '';
- }
- $jg='';
- $r=explode(',',$navinfor['infotags']);
- $count=count($r);
- for($i=0;$i<$count;$i++)
- {
- $ln++;
- $br='';
- if($line)
- {
- if($ln%$line==0)
- {
- $br='<br>';
- }
- }
- //TAGSID
- if($vartype=='tagid')
- {
- $tagr=$empire->fetch1("select tagid from {$dbtbpre}enewstags where tagname='".RepPostVar($r[$i])."' limit 1");
- }
- if(empty($cs)&&!empty($public_r['rewritetags']))
- {
- if($vartype=='tagid')
- {
- $rewriter=eReturnRewriteTagsUrl($tagr['tagid'],'etagid'.$tagr['tagid'],1);
- $tagsurl=$rewriter['pageurl'];
- }
- else
- {
- $rewriter=eReturnRewriteTagsUrl(0,$r[$i],1);
- $tagsurl=$rewriter['pageurl'];
- }
- }
- else
- {
- $tagsurl=$public_r[newsurl].'e/tags/?'.($vartype=='tagid'?'tagid='.$tagr['tagid']:'tagname='.urlencode($r[$i])).$cs;
- }
- $str.=$jg.'<a href="'.$tagsurl.'" target="_blank">'.$r[$i].'</a>'.$br;
- $jg=$br?'':$showjg;
- }
- }
- else
- {
- $and='';
- $where='';
- if($cid)
- {
- $where=strstr($cid,',')?"cid in ($cid)":"cid='$cid'";
- $and=' and ';
- }
- if($isgood)
- {
- $where.=$and.'isgood=1';
- }
- if($where)
- {
- $where=' where '.$where;
- }
- $order=$order?' '.$order:' tagid desc';
- $limit='';
- if($num)
- {
- $limit=' limit '.$num;
- }
- //推荐标红
- $gfont1='';
- $gfont2='';
- if($isgoodshow)
- {
- if(strstr($isgoodshow,'r'))
- {
- $gfont1='<font color="red">';
- $gfont2='</font>';
- }
- if(strstr($isgoodshow,'s'))
- {
- $gfont1=$gfont1.'<b>';
- $gfont2='</b>'.$gfont2;
- }
- }
- $jg='';
- $snum='';
- $sql=$empire->query("select tagid,tagname,num,isgood from {$dbtbpre}enewstags".$where." order by".$order.$limit);
- while($r=$empire->fetch($sql))
- {
- if($shownum)
- {
- $snum='('.$r[num].')';
- }
- $font1='';
- $font2='';
- if($isgoodshow&&$r[isgood])
- {
- $font1=$gfont1;
- $font2=$gfont2;
- }
- $ln++;
- $br='';
- if($line)
- {
- if($ln%$line==0)
- {
- $br='<br>';
- }
- }
- if(empty($cs)&&!empty($public_r['rewritetags']))
- {
- $rewriter=eReturnRewriteTagsUrl($r['tagid'],$vartype=='tagid'?'etagid'.$r['tagid']:$r['tagname'],1);
- $tagsurl=$rewriter['pageurl'];
- }
- else
- {
- $tagsurl=$public_r[newsurl].'e/tags/?'.($vartype=='tagid'?'tagid='.$r[tagid]:'tagname='.urlencode($r[tagname])).$cs;
- }
- $str.=$jg.'<a href="'.$tagsurl.'" target="_blank">'.$font1.$r[tagname].$snum.$font2.'</a>'.$br;
- $jg=$br?'':$showjg;
- }
- }
- echo $str;
- }
但是,这个函数帝国源码包装过度,直接echo了结果,而不是函数返回值,无奈只好ob_start()拦截后获取。还有就是这个函数调用了global $navinfor,那只好在调用前,满足人家的要求了。
最后,勾选使用程序代码后,合并问题一和问题二中的代码就完成任务了。
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫