建站技术网专注分享网站建设技术,网站建设教程,真正帮你学会做网站技术,轻松解决网站建设过程中遇到的常见问题,为广大站长服务。 收藏本站 | 订阅
域名投资,就来找米网,认准网址:www.zhaomi.cc 专业仿站,就到仿站网:www.fangzhan.org
  站内公告: ·帝国cms教程内容已更新,欢迎关注     ·建站技术网采用阿里云服务器,备案已通    
您当前的位置:首页 > cms教程 > Phpcms教程

PHPCMSV9调用全站最新内容的方法

时间:2018-01-18 10:23:09  来源:网络收集  整理: 建站技术网 www.jzjsw.com     点击:11次
PHPCMS v9 的数据只能调用一张表,也就是说无法一次性调用不同网站模板模型的内容。之前也有不少人问过,可是至今没人能解答该疑问。于是,我花了一个下午的时间,在debug中寻找最佳结果。

一般有一下三种情况:

1、一个栏目的调用。这没什么好说的,使用系统自带的content标签即可实现。

2、所有顶级栏目(同一模型)的调用。若直接使用content标签,并指定catid=0,是无法输出内容的。

3、多个模型的调用,也就是所谓的全站调用。这个......有点儿难。

第二种,使用get标签即可搞定,但存在一个非常不人性化的分页问题和一个bug。
分页问题:一般来讲,调用全站内容、排行榜之类的东西,都是新建一个单页面栏目(在主页等地方调用的先不谈),然后在 模板添加加入代码。但是,num属性只能指定每一页的列表内容条数,没有参数可以指定页码数量,坑爹的是,LIMIT竟然无法使用。有人建议使用if判断 分页数,break跳出——貌似行不通,页码那里还是显示所有分页序号......接着就出现了第二个问题——bug
Bug:动态页面、静态页面、伪静态页面。动态页面,页码序号的链接中竟然包含2个page参数,不过不影响使用,算了;伪静态页面的链接都是一样的,静态的没试过,有人说也一样。

第三种,同样也是用get标签,但是这里涉及到表的连接。一般可以使用JOIN、UNION之类的操作符,但UNION ALL操作符最合适,且查询效率最高。但是别以为这样就可以OK了,新的问题又来了,就算使用了page属性,也就只能显示一页。坑爹啊,有木有......
也曾经试过新建一个推荐位,发布文章时自动添加到这个推荐位。这样做也行得通,但是感觉有点麻烦,且无法自动更新。

既然分页出现问题,那我就自己构造分页,看代码!

<!--先自定义几个变量-->
{php $p=1;$pn=10;$pe=20;$ltime=time()-86400*3;}
<!--调用数据,分页显示-->
{pc:get sql="SELECT title,inputtime,url FROM phpcms_news WHERE inputtime>$ltime UNION ALL SELECT title,inputtime,url FROM phpcms_download WHERE inputtime>$ltime UNION ALL SELECT title,inputtime,url FROM phpcms_picture WHERE inputtime>$ltime ORDER BY inputtime DESC" page="$page" num=$pe cache="600" return="data"} <ul>
  {loop $data $r}
  <li><a href='{$r[url]}'>{$r[title]}</a></li>
  {/loop}
</ul>
{/pc}
<!--自定义页码显示-->
<div id="pages" class="text-c">
  <a class="a1">
{php echo $pn*$pe;}
{L('page_item')}</a>
  {loop $data $r}
  {if $p==1}{if $_GET[page]!="" && $_GET[page]!=1}<a href="{$CATEGORYS[$catid][url]}&amp;page=
{php echo $_GET[page]-1}
" class="a1">{L('previous')}</a>{else}<a href="{$CATEGORYS[$catid][url]}" class="a1">{L('previous')}</a>{/if}{/if}
  {if ($_GET[page]=="" && $p==1) || $_GET[page]==$p}<span>{$p}</span>{else}<a href="{$CATEGORYS[$catid][url]}&amp;page={$p}">{$p}</a>{/if}
  {if $p==$pn}{if $_GET[page]==""}<a href="{$CATEGORYS[$catid][url]}&amp;page=2" class="a1">{L('next')}</a>{else}{if $_GET[page]==$pn}<a href="{$CATEGORYS[$catid][url]}&amp;page={$pn}" class="a1">{L('next')}</a>{else}<a href="{$CATEGORYS[$catid][url]}&amp;page=
{php echo $_GET[page]+1}
" class="a1">{L('next')}</a>{/if}{/if}{/if}
  {php $p++}
  {php if($p>$pn) break;}
{/loop}


代码解析:
1、先定义几个变量,索引$p、页面数量$pn、每页内容数量$pe、范围时间$ltime。大家可以按需修改。
2、使用SQL语句从news、download和picture三张表中调出title、inputtime和url三个字段的记录,使用UNION ALL将它们连接起来,并按时间倒序排列。请将news、download、picture改成自己的、或者按需增加和删除。
3、自定义显示页码。样式可以自定义。但是不要删除某些代码的换行,会报错的。
最后来张效果图:
文章标题:PHPCMSV9调用全站最新内容的方法
文章网址:http://www.jzjsw.com/cmsJiaocheng/Phpcms/3638.html
上一篇:PHPCMS V9后台提示No permission resources的解决方案
下一篇:phpCMS 使用总结
来顶一下
返回首页
返回首页
相关文章
    无相关信息
推荐资讯
如何通过SEO优化排名赚钱?SEO赚钱方法
如何通过SEO优化排名赚
seo优化教程:网站seo内容优化
seo优化教程:网站seo
SEO细节:企业SEO如何快速为新站做出效果
SEO细节:企业SEO如何
电商技术将如何发展?2018年有这五个大胆预测
电商技术将如何发展?
最新文章
栏目更新
栏目热门