phpcms调用栏目如何用get语句调用多个栏目的最新文章

PHPCMS最新V9版本中如何按浏览次数(月、周、总)排行GET标签调用文章
  在用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}
频道月排行调用方法
&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&
这个就是两个很好的例子。当然我只用到了前一个例子中的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&
可以看到 &substring(b.hitsid,5)&是截取hitsid字段,从左往右数第5个字符串,即&c-2-5&从左往右数,1个&c&,1个 &2&,2个&-&,第5个字符就是&5&,截取后只剩下了第2个&-&后的id,到达了最终提取id的目的。当然,其中我还加入了另一个条件 &status=99&,这个表示已经审核通过的文章,这个可有可无。
本文关键词:
评论加载中...
ITOKIT友示:文明上网、拒绝恶骂教你如何在phpcms v9利用get标签在模板中调用代码
09:59:55&&&来源:&&&评论: 点击:
下面教大家如何在phpcms v9利用get标签在模板中调用代码。1、调用本系统单条数据,示例(调用ID为1的信息,标题长度不超过25个汉字,显示
下面教大家如何在phpcms v9利用get标签在模板中调用代码。
1、调用本系统单条数据,示例(调用ID为1的信息,标题长度不超过25个汉字,显示更新日期):
{get&sql=&select&*&from&phpcms_content&where&contentid=1&&/}&
标题:{str_cut($r[title], 50)} URL:{$r[url]} 更新日期:{date('Y-m-d', $r[updatetime])}
2、调用本系统多条数据,示例(调用栏目ID为1通过审核的10条信息,标题长度不超过25个汉字,显示更新日期):
{get&sql=&select&*&from&phpcms_content&where&catid=1&and&status=99&order&by&updatetime&desc&&rows=&10&}&
标题:{str_cut($r[title], 50)} URL:{$r[url]} 更新日期:{date('Y-m-d', $r[updatetime])}
3、带分页,示例(调用栏目ID为1通过审核的10条信息,标题长度不超过25个汉字,显示更新日期,带分页):
{get&sql=&select&*&from&phpcms_content&where&catid=1&and&status=99&order&by&updatetime&desc&&rows=&10&&page=&$page&}&
标题:{str_cut($r[title], 50)} URL:{$r[url]} 更新日期:{date('Y-m-d', $r[updatetime])}
分页:{$pages}
4、自定义返回变量,示例(调用栏目ID为1通过审核的10条信息,标题长度不超过25个汉字,显示更新日期,返回变量为 $v):
{get&sql=&select&*&from&phpcms_content&where&catid=1&and&status=99&order&by&updatetime&desc&&rows=&10&&return=&v&}&
标题:{str_cut($v[title], 50)} URL:{$v[url]} 更新日期:{date('Y-m-d', $v[updatetime])}
5、调用同一帐号下的其他数据库,示例(调用数据库为bbs,分类ID为1的10个最新主题,主题长度不超过25个汉字,显示更新日期):
{get&dbname=&bbs&&sql=&select&*&from&cdb_threads&where&fid=1&order&by&dateline&desc&&rows=&10&}&
主题:{str_cut($r[subject], 50)} URL:/viewthread.php?tid={$r[tid]} 更新日期:{date('Y-m-d', $r[dateline])}
6、调用外部数据,示例(调用数据源为bbs,分类ID为1的10个最新主题,主题长度不超过25个汉字,显示更新日期):
{get&dbsource=&bbs&&sql=&select&*&from&cdb_threads&where&fid=1&order&by&dateline&desc&&rows=&10&}&
主题:{str_cut($r[subject], 50)} URL:/viewthread.php?tid={$r[tid]} 更新日期:{date('Y-m-d', $r[dateline])}
不知道有没有朋友在使用中遇到这几种方法不能满足需求的时候呢?
例如:取出评论数最多的第3条到第10条记录,有人说我是多此一举,一般取最多评论没理由不取第一和第二条,因为PHPCMS的缩略图对4:3这样的尺寸比较好,对长条形(如3:4)的图片缩略效果不好,为了自己手动更新评论最多的第一和第二条记录,故此不想自动更新读取前两条。
<span&class=&xxnse_fen2&&{$r[comments]}人参与评论&&{$r[url]}&&title=&{$r[title]}&&{str_cut($r[title],&28)}</span&
关键点就在 order ments desc LIMIT 3,7 (表示从第3条记录开始,向下读取7条数据)这个在MYSQL是经常用,我抱着试试看的想法,结果是可以的。
phpcms V9 保留了2008的get标签的使用方法,它包括内部数据和外部数据。
我们先分析下内部数据的使用方法
1、内部数据的调用
{pc:get&sql=&SELECT&*&FROM&`XX`&WHERE&&fid&=$ltid&AND&digest&=2&AND&ifupload&=1&ORDER&BY&tid&DESC&&num=&2&&cache=&&3600&&return=&data&&}&
。。。。。&
loop}{/pc}&
由此可以看出& get 语句支持num的用法但是不支持 limit 5,5.这样的用法
实在是很遗憾
num是调用的条数
2、外部数据的调用
{&pc&:&get&sql&=&&SELECT&*&FROM&phpcms_member&&cache&=&&3600&&page&=&&$page&&dbsource&=&&discuz&&return&=&&data&&}&
{&loop&$data&$key&$val&}&
{&$val&[&username&]}&&br&/&&
{&$pages&}&
一个是数据源,一个是产生的pages翻页效果&
原文标题:教你如何在phpcms v9利用get标签在模板中调用代码
原文地址:
版权归网络时代所有,转载请注明出处
相关热词搜索:
延伸阅读:
频道总排行
频道本月排行投稿请先或
优惠价:90元
&&&&图集分享 织梦 模板 ,适合个人作品分享站! 网站编码:UTF-8 网站编号:F91 解压密码: ...
&&&&最近流量统计经常看到有人搜索快鲤鱼博客,现在免费放出,喜欢的就下载研究吧 使用说明: 1、模板在目录下...
&&&&1:上传所有文件夹到织梦安装目录 2:后台--系统---系统基本参数---模板默认风格:meme 3:后台--生成---更...
&&&&美女 图片站 简约风格 织梦模板 安装说明: 1、请直接将这两个文件夹复制到网站根目录替换 2、DeDe后台 - 系...
&&&&这是一款典型的产品营销型织梦模板网站,不过这款模板针对行业有所限制,颜色搭配比较古典、深沉,适合家具...
&&&&织梦女性门户网站模板免费下载,从互联网上下收集的一款免费模板,这款模板基于dedecms5.6版本基础上制作的...
&&&&网站程序:dedecms5.7 网站编码:GBK 网站说明: 简洁大气织梦网络公司模板,测试无错。兼容主流浏览器 安...
&&&&网站程序:dedecms5.7 网站编码:GBK 说明: 简洁大气网络公司织梦模板,里面可能有些别的网站的链接,自己...
&&&&仿163ym源码交易平台网站程序采用友价T4风格商城系统,软件、源码交易完成后可自动发货。该程序支持多用户...
&&&&适用版本:dedecms5.7 语言编码:GBK简体 模板大小:3.65 MB 说明: 非常大气的绿色html5照明产业类的织梦企业...
DEDECMS模板
&&&&网站源码内核:DEDECMS 5.7 SP1 网站编码:GB2312 源码编号:MKG253 织梦模板 说明: 家装公司 织梦模板 ,带表单提交功能与搜索功能,栏目分类细致,家装公司直...
127关注模板售价:
&&&&模板编号: MKG244 网站说明: 新闻门户 织梦模板 ,简洁,清爽,干净,并且网站蓝色风格设计,整体效果非常精细,纯手写div+css代码,符合W3C标准,完美兼容 IE...
230关注模板售价:
&&&&网站程序:DEDECMS 5.7 UTF-8编码(版本) 网站编号:MKG236 注:还原数据库之后的用户名和密码即为压缩包后面的两串英文字符!如果下载链接失效的话...
189关注模板售价:
&&&&网站编码:UTF-8 网站程序:DEDECMS5.7 SP1(最新版) 网站编号:MKG233 网站说明: HTML5自适应织梦装饰企业模板, 带联动筛选 ,几乎实现全调用,自适...
218关注模板售价:
&&&&源码程序:DEDECMS5.7 SP1 程序编码:UTF-8 源码编号:MKG235
源码说明: 1.织梦GBK程序支持,终身可升级程序,无需技术支持都可以完成。 2.兼容主流浏览器,符...
158关注模板售价:
&&&&源码程序:DEDECMS5.7 程序编码:UTF-8 源码编号:MKG237 源码说明: 织梦大气装饰公司模板,美工精湛,大部分实现调用,带图集模式! 注:还原数据库之后的用户...
180关注模板售价:
&&&&程序版本:DEDECMS5.7 SP1(08.14最新版本) 程序编码:GB2312 源码编号:MKG238 源码说明: 移动互联是互联网的未来趋势,拥有一个自适应移动客户端的自媒体博客...
198关注模板售价:
&&&&网站程序:dedecms 程序编码:UTF-8 源码编号:MKG239 网站说明: 非常精美完整的资讯类小型垂直行业网站宽屏织梦模板为大家奉上。 本模板是魔酷阁倾力打造的又...
105关注模板售价:
&&&&网站编码:GB2312 网站程序:DEDECMS5.7 SP1(最新版) 网站编号:MKG231 网站说明: 织梦汽车维修公司模板,简介大气,美工精湛,采用留言插件,管理留...
160关注模板售价:
&&&&【程序版本】:织梦dedecms5.7 GB2312 SP1版本(最新版本) 【网站编号】:MKG226 此款源码不可多得的视频设备、通用企业类整站源码,网站源码非常简...
147关注模板售价:
PHPCMS模板
模板售价:49.9元490关注
模板售价:59.9元1059关注
模板售价:89.9元499关注
模板售价:299元605关注
模板售价:89.9元308关注
模板售价:149元789关注
模板售价:299元403关注
模板售价:99.9元288关注
模板售价:89.9元258关注
模板售价:69.9元379关注
帝国CMS模板
其它CMS模板
模板售价:39.9元180关注
模板售价:199元429关注
模板售价:69.9元236关注
模板售价:30元432关注
模板售价:299元477关注
模板售价:5元396关注
网站图标素材
PHPCMS教程PHP乐享网更新主题啦!
大家体验有什么问题,可以直接留言!
phpcms v9推荐位和普通文章列表一起时,防止重复调用
phpcms v9推荐位和普通文章列表一起时,防止重复调用
围观1944次
编辑日期: 字体:
phpcms v9在调用时,如上面的效果
达到效果第一首篇文章要求是带图片的文章,第二其余5篇是文章列表
解决方法有四种方法可避免文章重复又可确保第一篇是特定带缩略图的
推荐第三和第四
第一种方法:第一篇文章和后四篇文章采用推荐位(这个就不详细说了)
缺点:都需要转换成推荐位,导致数据库大,优点:简单
第二种方法:第一篇采用推荐位,后四篇采用get语句
缺点:页面内需要写很多sql,前台模版调用复杂,优点:不需要动核心代码,也不会造成数据库大的问题
如果怕升级出错的话,可以用这个
{pc:content
action="position" posid="9" catid="109" order="listorder DESC" num="1"}
{loop $data $r}
&div&&img src="{thumb($r[thumb],86,70)}"
alt="{$r['title']}" /&&/div&
&strong&&a href="{$r['url']}" title="{$r['title']}"&{if $r['sutitle']}{$r['sutitle']}{else}{str_cut($r['title'],20,'')}{/if}&/a&&/strong&
&p&{str_cut($r['description'],52,'...')}&a href="{$r['url']}"&[详细]&/a&&/p&
&?php $tid=$r['id'];?&
&div&&/div&
sql="select * from v9_news where `id`!=$tid and catid=109 order by id desc" num="6"}
{loop $data $r}
&li&&&a href="{$r['url']}" title="{$r['title']}"&{str_cut($r['title'],36,'')}&/a&&/li&
第三种方法:采用外部重写where语句
缺点是需要外部php写的多,有点是不修改核心且运行效率高些
{pc:content
action="position" posid="9" catid="109" order="listorder DESC" num="1"}
{loop $data $r}
&div&&img src="{thumb($r[thumb],86,70)}"
alt="{$r['title']}" /&&/div&
&strong&&a href="{$r['url']}" title="{$r['title']}"&{if $r['sutitle']}{$r['sutitle']}{else}{str_cut($r['title'],20,'')}{/if}&/a&&/strong&
&p&{str_cut($r['description'],52,'...')}&a href="{$r['url']}"&[详细]&/a&&/p&
{php $where="`status`=99 AND `id`!=$r[id] and catid=109";}
&div&&/div&
{pc:content
action="lists" where="$where" catid="109"
{loop $data $r}
&li&&&a href="{$r['url']}" title="{$r['title']}"&{str_cut($r['title'],36,'')}&/a&&/li&
第四种方法:对标签lists重写
缺点:需要小动下核心文件,优点:前台使用方面,也不会造成数据库大的问题
修改 phpcms\modules\content\classes\content_tag.class.php 找到lists方法在$order = $data['order'];语句前添加
if(isset($data['tid'])){
if(is_array($data['tid']))
$dot=$cid="";
foreach($data['tid'] as $tid)
$cid.=$dot.$
$sql.=" and `id`not in (".$cid.") ";
else $sql.=" and `id`!=".$data['tid']." ";
前台代码:
{pc:content
action="position" posid="2" order="listorder DESC" num="1"}
{loop $data $r}
&h4&&a href="{$r[url]}" title="{$r[title]}"&{str_cut($r[title],36,'')}&/a&&/h4&
&?php // $tid=$r['id'];?&
&?php // $tid=array(5,6);?&
{pc:content
action="lists" num="20" catid="20" tid="$tid" }
{loop $data $r}
&li&{$r['title']}&/li&
图片一是正常情况下调用,即$tid为空
图片二是正常情况下调用,即$tid字符串
图片三是正常情况下调用,即$tid数组
该方法支持单一文章和多文章
本文固定链接:
转载请注明:
作者:继梁
我吧,是一名前端开发工程师,也是的站长。介绍完毕!
如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!
您可能还会对这些文章感兴趣!PHPCMS模板制作_一览文库
一览( 微信公众号:yilanshequ )
打开微信扫一扫,即可直接关注
当前位置: &
PHPCMS模板制作
PHPCMS模板制作
相关文档推荐
共56个文档积分:1300分
共50个文档积分:2500分
共50个文档积分:2500分
共33个文档积分:1700分
猜你喜欢行家文档推荐
25455人查阅
21526人查阅
20792人查阅
20792人查阅
21076人查阅
20743人查阅
10773人查阅
10747人查阅
10131人查阅
10766人查阅
9577人查阅
5459人查阅
所需积分:0分

我要回帖

更多关于 phpcms调用子栏目 的文章

 

随机推荐