作者:匿名 来源:老者工作室 浏览:1841次 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="3600"}<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="3600"}<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字段,从左往右数第5个字符串,即“c-2-5”从左往右数,1个“c”,1个 “2”,2个“-”,第5个字符就是“5”,截取后只剩下了第2个“-”后的id,到达了最终提取id的目的。当然,其中我还加入了另一个条件 “status=99”,这个表示已经审核通过的文章,这个可有可无。

转载于:https://www.cnblogs.com/gzmg/p/3222976.html

PHPCMS V9 按浏览次数排行调用文章相关推荐

  1. wordpress中非插件统计文章浏览次数

    非插件统计文章浏览次数 1.在主题的 functions.php文件的最后一个 ?> 前面添加下面的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...

  2. Phpcms所有系统变量列表 Phpcms V9 文件目录结构

    Phpcms所有系统变量列表 用户变量: view plaincopy to clipboardprint? $_userid    用户id   $_username 用户名   $_areaid  ...

  3. 手机网站php模板修改,Phpcms V9自定义手机WAP模板新方法

    近来越来越多手机WAP.自适应网站,可见移动网页是未来,响应式是未来!但是在实际经验中,CMSYOU发现:响应式自适应虽然在国外非常流行了.大家都在追随,不过在国内,由于XP上ie6.IE8,带宽等问 ...

  4. PhpCms V9调用指定栏目子栏目文章的方法

    PhpCms V9调用指定栏目子栏目文章的方法 第一种,直接写父类id {pc:content action="lists" catid="父类id" num= ...

  5. PhpCms V9调用指定栏目子栏目文章的两种方法

    PhpCms V9调用指定栏目子栏目文章的两种方法 第一种.直接写子栏目id ,用cat in {pc:get sql="SELECT * from v9_news where status ...

  6. phpcms ajax 调取文章内容,Phpcms V9列表页使用GET标签调用指定文章内容的方法

    十一归来,开始上班咯,假期愉快吧? 十一长假结束,CMSYOU继续分享CMS教程,与大家一起迎接新一天的开始.继续新的挑战, 一起加油! 在续之前发表的原创教程Phpcms V9列表页调用栏目第一篇文 ...

  7. PHPCMS v9.6.0 调用标签整理

    PHPCMS作为普通企业展示站还是非常不错的,静态化做的也是非常好,速度也挻快的.标签调用也是一学就懂.接触过几款cms, php语言类型的话,wordpress做博客最好,国内外主题资源多,网上相关 ...

  8. php实现贴吧功能,PHPCMS V9万能字段增加单选功能,实现多条房产信息调用1个开发商信息等效果...

    用过PHPCMS V9万能字段的朋友应该知道,万能字段是个非常强大的功能,基本上可以实现任何复杂的字段逻辑调用,比如调用相关文章.调用相关房产信息等等.作者在帮一个客户做房产网站项目开发的时候,需要实 ...

  9. PhpCms V9 调用栏目推荐位的解决办法

    PhpCms V9 调用栏目推荐位的解决办法 http://www.veryhuo.com 2011-05-09 烈火学院 投递稿件 我有话说 PhpCms V9 调用栏目推荐位的解决办法 在栏目页/ ...

最新文章

  1. NC:潮湿的墙体和家具中微生物迅速增长!
  2. C#进阶系列——WebApi 身份认证解决方案:Basic基础认证
  3. java 连接池_初探数据库连接池
  4. Git 技术篇-GitHub免费私有库设置方法实例演示,GitHub私有库时代来临
  5. [云炬创业基础笔记]成长资源培养与控制
  6. eclipser认java源码_java相关:Eclipse查看开发包jar里源代码的方法
  7. IMA文件如何打开,winimage使用方
  8. JQuery实现点击按钮切换图片(附源码)--JQuery基础
  9. JavaScript基础部分
  10. html 获取本地txt输出,html 5 读取本地文件API
  11. [转载]MyISAM InnoDB 区别
  12. jar包导出无法显示图片或者音乐_超详细微信表情包制作教程
  13. 为什么需要数据库外键
  14. 面向对象编程---掷骰子游戏
  15. http接口测试工具
  16. Spark架构原理和生态系统
  17. 即刻发光!武汉国金天地街区亮灯啦!
  18. Oracle数据库建表 Oracle数据库的统一命名与编码规范
  19. 64位office无法安装
  20. 《奇点临近(The Singularity is Near:When Humans Transcend Biology)》

热门文章

  1. pip install 时报错 ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问(已解决)
  2. LeetCode 1894. 找到需要补充粉笔的学生编号
  3. 天池 在线编程 木材加工(二分查找)
  4. LeetCode 1609. 奇偶树(层序遍历)
  5. LeetCode MySQL 1336. 每次访问的交易次数
  6. LeetCode MySQL 1398. 购买了产品A和产品B却没有购买产品C的顾客
  7. LintCode解题目录
  8. LeetCode 462. 最少移动次数使数组元素相等 II(数学)
  9. python自动化pdf报告_[Python] 自动化办公 PDF提取文字、表格、图片
  10. form表单通过checkbox_飞冰表单解决方案 - FormBinder