帝国cms列表页调用tag标签

  • A+
所属分类:帝国cms教程

帝国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,'','&nbsp;',0,'','tagname'[/showtags]来调用 当前信息中的tags并且带连接。

要是在列表页中也可以这样调用就漂亮了,然并卵。列表页下部不支持标签。那就只好写代码了。

有以下考虑:

  1. tags信息在副表中,要从数据库中调用;
  2. 最好还是用帝国的原生tags函数,这样伪静态什么的包容性好些。

第一个问题:

  1. $tbname=$class_r[$r[classid]][tbname];
  2. $fb=$r[stb];
  3. $ftbname=$dbtbpre."ecms_".$tbname."_data_".$fb;
  4. $jhcr['infotags'] = $empire->gettotal("select infotags as total  from $ftbname where id='$r[id]'");
  5. $GLOBALS['navinfor']=$jhcr;

第二个问题

  1. ob_start();
  2. sys_eshowtags('selfinfo',10,0,'',0,'','&nbsp;',0,'','tagname');
  3. $tags=ob_get_clean();
  4. $listtemp='<li><a href="[!--titleurl--]" title="[!--oldtitle--]">[!--title--]</a> 
  5. <span style="float:right">Tags:  <i>'.$tags.'</i></span></li>';

说明下,showtags标签对应的函数就是

  1. //显示TAGS
  2. function sys_eShowTags($cid,$num=0,$line=0,$order='',$isgood='',$isgoodshow='',$showjg='',$shownum=0,$cs='',$vartype=''){
  3. global $empire,$dbtbpre,$public_r,$navinfor;
  4. $str='';
  5. if(empty($showjg))
  6. {
  7. $showjg='   ';
  8. }
  9. $ln=0;
  10. if($cid=='selfinfo')
  11. {
  12. if(empty($navinfor['infotags']))
  13. {
  14. return '';
  15. }
  16. $jg='';
  17. $r=explode(',',$navinfor['infotags']);
  18. $count=count($r);
  19. for($i=0;$i<$count;$i++)
  20. {
  21. $ln++;
  22. $br='';
  23. if($line)
  24. {
  25. if($ln%$line==0)
  26. {
  27. $br='<br>';
  28. }
  29. }
  30. //TAGSID
  31. if($vartype=='tagid')
  32. {
  33. $tagr=$empire->fetch1("select tagid from {$dbtbpre}enewstags where tagname='".RepPostVar($r[$i])."' limit 1");
  34. }
  35. if(empty($cs)&&!empty($public_r['rewritetags']))
  36. {
  37. if($vartype=='tagid')
  38. {
  39. $rewriter=eReturnRewriteTagsUrl($tagr['tagid'],'etagid'.$tagr['tagid'],1);
  40. $tagsurl=$rewriter['pageurl'];
  41. }
  42. else
  43. {
  44. $rewriter=eReturnRewriteTagsUrl(0,$r[$i],1);
  45. $tagsurl=$rewriter['pageurl'];
  46. }
  47. }
  48. else
  49. {
  50. $tagsurl=$public_r[newsurl].'e/tags/?'.($vartype=='tagid'?'tagid='.$tagr['tagid']:'tagname='.urlencode($r[$i])).$cs;
  51. }
  52. $str.=$jg.'<a href="'.$tagsurl.'" target="_blank">'.$r[$i].'</a>'.$br;
  53. $jg=$br?'':$showjg;
  54. }
  55. }
  56. else
  57. {
  58. $and='';
  59. $where='';
  60. if($cid)
  61. {
  62. $where=strstr($cid,',')?"cid in ($cid)":"cid='$cid'";
  63. $and=' and ';
  64. }
  65. if($isgood)
  66. {
  67. $where.=$and.'isgood=1';
  68. }
  69. if($where)
  70. {
  71. $where=' where '.$where;
  72. }
  73. $order=$order?' '.$order:' tagid desc';
  74. $limit='';
  75. if($num)
  76. {
  77. $limit=' limit '.$num;
  78. }
  79. //推荐标红
  80. $gfont1='';
  81. $gfont2='';
  82. if($isgoodshow)
  83. {
  84. if(strstr($isgoodshow,'r'))
  85. {
  86. $gfont1='<font color="red">';
  87. $gfont2='</font>';
  88. }
  89. if(strstr($isgoodshow,'s'))
  90. {
  91. $gfont1=$gfont1.'<b>';
  92. $gfont2='</b>'.$gfont2;
  93. }
  94. }
  95. $jg='';
  96. $snum='';
  97. $sql=$empire->query("select tagid,tagname,num,isgood from {$dbtbpre}enewstags".$where." order by".$order.$limit);
  98. while($r=$empire->fetch($sql))
  99. {
  100. if($shownum)
  101. {
  102. $snum='('.$r[num].')';
  103. }
  104. $font1='';
  105. $font2='';
  106. if($isgoodshow&&$r[isgood])
  107. {
  108. $font1=$gfont1;
  109. $font2=$gfont2;
  110. }
  111. $ln++;
  112. $br='';
  113. if($line)
  114. {
  115. if($ln%$line==0)
  116. {
  117. $br='<br>';
  118. }
  119. }
  120. if(empty($cs)&&!empty($public_r['rewritetags']))
  121. {
  122. $rewriter=eReturnRewriteTagsUrl($r['tagid'],$vartype=='tagid'?'etagid'.$r['tagid']:$r['tagname'],1);
  123. $tagsurl=$rewriter['pageurl'];
  124. }
  125. else
  126. {
  127. $tagsurl=$public_r[newsurl].'e/tags/?'.($vartype=='tagid'?'tagid='.$r[tagid]:'tagname='.urlencode($r[tagname])).$cs;
  128. }
  129. $str.=$jg.'<a href="'.$tagsurl.'" target="_blank">'.$font1.$r[tagname].$snum.$font2.'</a>'.$br;
  130. $jg=$br?'':$showjg;
  131. }
  132. }
  133. echo $str;
  134. }

但是,这个函数帝国源码包装过度,直接echo了结果,而不是函数返回值,无奈只好ob_start()拦截后获取。还有就是这个函数调用了global $navinfor,那只好在调用前,满足人家的要求了。

最后,勾选使用程序代码后,合并问题一和问题二中的代码就完成任务了。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: