PHPCMS V9 调用全站最热文章

频道总排行调用方法
 class="box">
     class="title-2">频道总排行
    {pc:get sql="select a.id,a.title,a.url,a.catid,b.hitsid,b.views from v9_news a left join v9_hits b on a.id=substring(b.hitsid,5) where a.catid in ($arrchildid) order by b.views desc" num="10" cache="3600"}
     class="content digg">
        {loop $data $r}
            
  • href="{$r[url]}" title="{$r[title]}"  target="_blank">{str_cut($r[title],36,'...')}
  •         {/loop}          {/pc}


    频道月排行调用方法

     class="box">
         class="title-2">频道本月排行
        {pc:get sql="select a.id,a.title,a.url,a.catid,b.hitsid,b.views from v9_news a left join v9_hits b on a.id=substring(b.hitsid,5) where a.catid in ($arrchildid) order by b.monthviews desc" num="8" cache="3600"}
         class="content rank">
            {loop $data $r}
  • {number_format($r[views])} href="{$r[url]}"{title_style($r[style])} class="title" title="{$r[title]}">{str_cut($r[title],56,'...')}
  • {/loop} {/pc}



     这个就是两个很好的例子。当然我只用到了前一个例子中的SQL语句中的substring方法。Substring是截取字符串的作用,具体Substring的解释详见《SQL语句Substring用法》。

      经过上述例子学习后改进,虽然我的方法跟上面的多表联查不一样,但同样得到了最后的调用全站所有文章排行的方法:

     class="idxTopApps contents">
     class="indexIcns">
    {pc:get sql="SELECT a.id,a.url,a.thumb,a.status,b.hitsid,b.views FROM v9_download a, v9_hits b WHERE a.status=99 and a.id=substring(b.hitsid,5) ORDER BY b.views DESC" num="6"}
    {loop $data $r}
  • href="{$r['url']}"> src="{$r['thumb']}" />
  • {/loop} {/pc}


      可以看到“substring(b.hitsid,5)”是截取hitsid字段,从左往右数第5个字符串,即“c-2-5”从左往右数,1个“c”,1个“2”,2个“-”,第5个字符就是“5”,截取后只剩下了第2个“-”后的id,到达了最终提取id的目的。当然,其中我还加入了另一个条件“status=99”,这个表示已经审核通过的文章,这个可有可无。

    todo:后面会加上日期归类


     
    © 2001-2017 MYSZIIT.COM. All Rights Reserved.