本篇文章给大家谈谈phpcms获取最新内容,以及phpcms 下载对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、cms系统怎样获取动态最新消息
- 2、PHPCMS如何调用多个分类栏目的最新文章
- 3、phpcms 如何调用指定栏目下最新文章
- 4、PHPCMS V9 获取热门文章的内容,不是标题
- 5、phpcmsv9怎么提取栏目内容
- 6、phpcms中pc获取的数据编码不对
1、cms系统怎样获取动态最新消息
一、什么是内容管理系统?
内容发布系统也即CMS,英文全称为:Content management system,用于对企业业务数据进行组织、管理和发布,这里的内容不仅仅指文字内容,还包括图片、声音、视频、Flash等富媒体资源,CMS的应用极大的提高了站点的建设效率并降低了维护成本。目前市面上的CMS种类繁多,开源的内容管理系统主要有:
PHP:
国内PHPCMS,VeryCMS,DeDeCMS,EmpireCMS,HBCMS
国外:Mambo,Joomla!,XOOPS,Drupal
更多见:
Java见
ASP主要考察使用过风讯,对其它ASPCMS感兴趣的可以查看这篇文章
商业CMS主要有:方正翔宇CMS,北方网CMS和TRS WAS,其中方正翔宇CMS在媒体行业应用非常广泛,TRS在政府部门应用非常广泛,北方网CMS在一些媒体网站中也有些应用。
就目前的总体情况来看,开源类CMS和商业类CMS还存在很大的差距,商业CMS在工作流,权限控制,内容的编采发以及系统的性能,扩展和可维护性上已经非常成熟和完善;对比开源CMS,则在这些方面存在很大的差距。由于个人觉得国外的CMS不太符合国人的使用习惯和国情,所以对他们研究的比较少也不太清楚他们在国内的应用情况,就国内的CMS而言目前也还没有看到较大规模应用的案例(如果有请告诉我),我透露几个目前已知的商业CMS内容发布系统的应用情况关键性能指标,最大数据量千万级,同时最高终端用户数500,发布时间1-2秒,每日更新1万-2万篇内容,相关内容自动更新。总之,开源CMS要走的路还长。
二、什么是动态可缓存的内容管理系统?
动态可缓存的内容管理系统是指前台页面动态解析执行并且动态解析执行的页面可被客户端和代理服务器进行缓存从而达到和生成静态页面同样的执行性能和效果的管理系统。
三、为什么使用动态可缓存的内容管理系统?
第一节面提供的内容发布系统包括商业类CMS基本都是以生成静态页面的方式进行内容发布,我们早期的系统也全部使用静态静态页面进行内容发布,在我们的实际使用过程中,生成静态页面的方式给我们带来了很多麻烦,主要有下面几个问题:
1、在设计、开发上,使用静态页面进行发布,系统需要很多额外的设计和开发,以静态页面的方式进行发布,涉及到生成规则,更新规则,发布规则等方方面面的事务,特别是当系统对内容的发布和更新有苛刻的性能要求时,这些规则更是需要进行仔细的设计和权衡。使用静态页进行发布主要是考虑到系统的执行性能,我当然同意静态页的执行性能是很高的,但是多数系统却远远大不到预想的访问量而引入了高度的系统复杂,也并非是系统一开始就有巨大的访问量,我也不认同动态执行页面就无法承受大访问量的说法,其实我看到的大多数CMS中都没有对静态页的处理规则进行很好的设计,比如:经常是在后台撤销了内容发现原始html没有删除,内容依然可以访问或者一篇内容更新时,相关引用的内容无法做到关联更新;静态发布方式并不是那样容易的,相反我觉得动态发布更容易开发和维护。
2、在系统维护上,生成的静态页面会占用很大的磁盘空间,我们所有的静态页面加起来应该有100-200个G了。这样庞大的数据量备份,恢复都是很麻烦的,无形之中给系统的运维工作增加了很大的难度,但实际上CMS有个显著的特点就是发布多,修改少,越早的数据越少被访问,应该说这100,200个G的数据中有99%以上的数据是有效期过后很少或再也没被访问过的,所以磁盘几乎是白白的被浪费了。
所以,在我们的实际使用过程中我们更倾向于动态内容执行+多重cache的方式,新的系统中我们是这样做的,最后完成的系统非常简单并在Squid的帮助下达到静态页面的执行性能。
四、如何实现动态可缓存的内容管理系统?
(可缓存的内容管理系统用户访问流程)
实现过程:
1. 所有前台页面使用URL rewrite重写成.html进行访问,方便搜索引擎收录。
2. WEB程序执行时,向Squid服务器发送Expires头,用于控制squid服务器的缓存时间。Expires用户设置Squid服务器和客户端的缓存时间。如:
PHP
php代码
header("Expires:" . gmdate("D, d M Y H:i:s", time() + 120). "GMT"); //缓存120秒
Java
Java代码
java.text.SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Calendar cal = Calendar.getInstance(new SimpleTimeZone(0, "GMT"));
format.setCalendar(cal);
java.util.Date expires = format.parse(format.format(new Date(System.currentTimeMillis() + 120 * 1000)));
response.setHeader('Expires: ' + expires);
3. 配置Squid服务器指向源服务器,并配置ignore-reloa来忽略no-cache和reload请求以提升Squid的命中率。
4. 将最新最热的数据缓存到Memcached服务器,减少数据库的查询。
至此整个过程已经完成,早期系统的访问量一般比较小,这时候可直接将WEB服务器对外提供服务,由于CMS所管理内容发布快,修改少的特性,最新最热的内容都将在Memcached中命中;当访问量增加到一定程度的时候就可以在前端加上squid服务器,这样就实现了和静态页面一样的效果,同时也兼备了系统的可维护性和灵活性。我们的全搜索首页,母婴频道,娱乐频道使用这种方法实现获得了很好的效果。
2、PHPCMS如何调用多个分类栏目的最新文章
如下代码:
{pc:get sql="SELECT * FROM v9_news WHERE catid in(1,3,5) ORDE
R BY id DESC" num="10"}
{loop $data $v}
lia href="{$v[url]}"{$v[title]}/a/li
{/loop}
{/pc}
上面调用了1,3,5分类的文章,这个是比较容易理解的,如果遇到上面提到的问题,大的分类下面又存在小的分类,那么利用上面的方法就没有办法调出子分类的内容了,所以我们要做的是如果直接分类那么直接显示分类ID,如果有小的分类,那么就显示所有的子分类ID,最后再把他们用逗号连接起来,同样可以实现相同的效果,看下面的代码:
?php
$assigncatid=array(23,24,19);
$str =array();
foreach($assigncatid as $row){
$str[]=$CATEGORYS[$row][arrchildid];
}
$finalcatid= implode(',', $str);
?
{pc:get sql="SELECT * FROM v9_news WHERE catid in($finalcatid) ORD
ER BY id DESC" num="14"}
{loop $data $v}
lia href="{$v[url]}"{$v[title]}/a/li
{/loop}
{/pc}
这里先了 3 个分类的ID,其中,23,24没有子分类,而19有许多子分类,$CATEGORYS[$row][arrchildid] 这一句很重要,如果没有子分类则直接显示该分类的ID,如果有子分类,就会以1,2,3,4,5这种格式将所有的子分类都显示出来,数组中有3个值,所以foreach后会形成3个数组,分别是大类23,24,以及19,43,44,其中,43,44均为19大类下面的子分类ID。
把这循环的三组数组赋给一个新的数组,然后在循环外用逗号切割成字符串,拼起来就是所有大类与子类了,如23,24,19,43,44这样,做到这里就实现了刚开始提出的问题。
另外一种方法调用代码如下:
{loop subcat(15) $k $v}
{php $subcatid[] = $k;}
{/loop}
{php $subcatid = implode(',', $subcatid);}
然后在读取SQL的条件中这样写 WHERE catid in($finalcatid)
3、phpcms 如何调用指定栏目下最新文章
在前台模板中使用phpcms标签调取文章列表:
{pc:content action="lists" catid="1" num="10" order="inputtime desc"}
!--使用catid制定栏目,使用order属性设置添加时间倒序获取最新文章--
{loop $data $v}
a href="{$v['url']}"{$v['title']}/a
{/loop}
{/pc}
在后端php程序里获取最新文章列表,引入文章模型,select方法读取列表数据:
$db = pc_base::load_model("content_model");
$db-set_catid($catid); //$catid代表栏目id
$datas = $db-select(array('catid'=$catid,'status'=99),"*",10,'inputtime desc'); //$datas便是文章列表数组数据了
PS:标签与二次开发的使用可参看phpcms官方使用手册以及iphpcms的视频教程。
4、PHPCMS V9 获取热门文章的内容,不是标题
用get吧。代码如下:
{pc:get sql="SELECT DISTINCT content,views FROM cd_news_data,cd_hits WHERE cd_news_data.id = substring(cd_hits.hitsid,5) ORDER BY cd_hits.views DESC" num="5" } {loop $data $r}
p{$r[content]}/p
{/loop}
{/pc}
你试试
琅枫个人博客
5、phpcmsv9怎么提取栏目内容
在用phpcms V9做二次开发的时候,由于没有做首页的模板,又为了让首页显示栏目页的内容,就修改了/phpcms/modules/content/create_html.php文件里面的public_index函数,该函数大概在499行,我们修改让首页的内容读取的是栏目页首页的内容,也就是首页是,但是我们读取了的内容,目的是可以省去一个模板,而且还可以有首页。但是这样做又出现了一个问题,就是每次更新和修改内容的时候,由于自动更新了栏目页和首页,导致了之前首页读取栏目页的内容失败,回到了旧版的V9的首页,每次更新内容都要重新发布首页,确实很麻烦。
想了许久,终于找到了解决方法,首先我们找到/phpcms/model/content_model.class.php里面的add_content函数,大概在33行,我们找到215-216行,注释掉以下代码:
这样试试呢我也是在后盾人自己学习理解的,希望能帮到你给你个参考(*^o^*)
6、phpcms中pc获取的数据编码不对
复制源程序里的\caches\configs\system.php这个文件,用专业的编辑器(如DW、Notepad++等)打开重新更改相应数据,保存并上传,现在就OK了。
phpcms指的是一款具备文章、下载、图片、分类信息、影视、商城、采集、财务等众多功能的强大、易用、可扩展的网站管理软件,同时也是一个开源的PHP开发框架;它采用模块化开发,支持多种分类方式,支持众多的程序组合,可轻松实现网站平台迁移。
Phpcms是国内领先的网站内容管理系统,同时也是一个开源的PHP开发框架。
Phpcms采用模块化开发,支持多种分类方式,使用它可方便实现个性化网站的设计、开发与维护。它支持众多的程序组合,可轻松实现网站平台迁移,并可广泛满足各种规模的网站需求,可靠性高,是一款具备文章、下载、图片、分类信息、影视、商城、采集、财务等众多功能的强大、易用、可扩展的优秀网站管理软件。
关于phpcms获取最新内容和phpcms 下载的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。