PHPCMS V9 按浏览次数排行调用文章

  • 时间:
  • 浏览:0
  • 来源:大发1分6合_大发1分6合投注平台_大发1分6合娱乐平台
作者:匿名 hihi 来源:老者工作室 浏览: 2011-6-22 14:59:05 字号:大 中 小

[摘要]PHPCMS V9(简称V9)采用PHP5+MYSQL做为技术基础进行开发。V9采用OOP(面向对象)最好的办法进行基础运行框架搭建。模块化开发最好的办法做为功能开发形式。框架易于功能扩展,代码维护,优秀的二次开发能力,可满足所有网站的应用需求。

  在用PHPCMS做下载站随后,比较头疼的随后目前的V9版竟然那么下载次数统计,而不到使用浏览次数来忽悠浏览者,呵呵,管他了,反正一般来访者有的是会太注意。现在不到忍着了,刚从DeDeCMS转过来,好歹人家有的是下载次数统计的。毕竟那么十全十美的东西……

  做下载总得有个下载排行吧,按照一般的逻辑,进入某栏目,显示的是某栏目的下载排行,而在首页呢,应该显示的是全站所有软件条目的下载排行。

  虽说PHPCMS V9是新开发的,架构比较好,但会 错误随后少,好多标签共共同使用后就经常出现异常了,头都大了,也懒得分类整理贴到 官方论坛给大伙修正,买车人先避开,能不需要就不需要。

  而我都还可否 说的随后,PHPCMS V9的标签竟然不支持重复调用多个栏目,相似于我都还可否 显示某另兩个栏目的下载排行,V9就做不到了,而随后的2008版却是都还可否 支持的。令人费解,不到认为是新架构,还没来得及完善了。

  更难理解的是,浏览次数的表里面,与相关文章或下载内容关联的是另兩个叫“hitsid”的字段,共同也是该表的主键。存储的字段内容如“c-2-5”一类的,而有的是普通的整型数字,不到简单的与文章表随后下载表里面的条目的“id”号直接关联就得到相关的浏览次数,你你这俩另类的“x-y-z”的最好的办法令不少SQL话语的生手望而生畏,包括买车人。

  不过还好,你你这俩“x-y-z”的格式是有规律可循的,于是乎,我查看完相关的文档,想到了用字符串的形式,随后我做的是下载站,“x-y-”这段字符串是固定的,随后“c-2-”,第另兩个“c”是哪些地方问你,第兩个“2”应该是内容模型,“2”是下载模型,“1”是文章模型,都还可否 到模型管理里面查看id号。最后那个数字随后对应的文章表或下载表里的条目id了,统统有,有的是的是那么最好的办法的,我都还可否 到的随后在SQL话语里,将固定的“c-2-”和字段id合在共同,得到的随后诸如“c-2-5”一类的字符串,但会 在用条件比对即可。

  但会 限于买车人水平有限,你你这俩字符串加了半天,那么才能成功。于是乎在网上漫无边际的搜寻着,无意发现了IT民工x宅男写的文章《Phpcms V9 替换顶级栏目页面为列表页及BUG修复》,从中找到了另兩个最好的办法,随后使用SQL话语的“substring”,我恍然大悟,你你这俩最好的办法也行得通的啊。先附上这位同学给出的最好的办法:

频道总排行调用最好的办法

<div class="box">

    <h5 class="title-2">频道总排行</h5>

    {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="32000"}

    <ul class="content digg">

        {loop $data $r}

            <li> <a href="{$r[url]}" title="{$r[title]}"  target="_blank">{str_cut($r[title],36,'...')}</a></li>

        {/loop}

    </ul>

    {/pc}

</div>



频道月排行调用最好的办法

<div class="box">

<h5 class="title-2">频道本月排行</h5>

{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="32000"}

<ul class="content rank">

{loop $data $r}

<li><span>{number_format($r[views])}</span><a href="{$r[url]}"{title_style($r[style])} class="title" title="{$r[title]}">{str_cut($r[title],56,'...')}</a></li>

{/loop}

</ul>

{/pc}

</div>



  你你这俩随后另兩个很好的例子。当然我只用到了前另兩个例子中的SQL话语中的substring最好的办法。Substring是截取字符串的作用,具体Substring的解释详见《SQL话语Substring用法》。

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

<div class="idxTopApps contents">

<ul 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}

<li><a href="{$r['url']}"><img src="{$r['thumb']}" /></a></li>

{/loop}

{/pc}

</ul>

</div>



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

PHPCMS下载

本文转自:老者工作室

sssss
Tags: phpcms   phpcms v9   排行  
责任编辑:mozi