帝国、PHPCMS及织梦对比(二):支持SQL调用的标签
作者:落叶 来源:pmume.com 发布时间:2011-08-26 13:00:58
对于一般的CMS用户,CMS系统默认的标签封装的越完整,使用越简单越受欢迎,但如果是个性化数据调用需求较多的用户,通常都会感觉系统内置的标签局限性太大,不够灵活,特别是懂PHP或MYSQL的站长朋友们,更希望能够很方便的直接通过SQL语句在模板中自由调用数据库中的各种数据。
我对PHP和MYSQL不能算精通,但能算CMS的深度用户,很多时候去测试一款CMS时,都会考虑这款CMS是否支持直接在模板中通过SQL语句来读取CMS系统内的或者外部数据源的数据。很多时候,希望突破内置标签的局限性,灵活自由的以各种形式来调用CMS数据库中的数据,特别是不同程序间的数据整合调用时,支持SQL语句的标签能够省去很多麻烦。
那么本文中下面落叶对帝国CMS、PHPCMS及DEDECMS这三款CMS中的支持通过SQL语句直接调用数据的标签作一些对比分析。
1)帝国CMS中直接通过SQL语句调用数据的标签:
如显示栏目id为1的10条新闻表记录
[ecmsinfo]"select * from phome_ecms_news where classid=1 order by id desc limit 10",10,30,0,24,1,0[/ecmsinfo] |
实际上帝国CMS中支持直接SQL语句调用数据的标签不止ecmsinfo这一个标签,所谓的灵动标签 (e:loop)、文字调用标签phomenews等。
我看到帝国CMS官方论坛有用户问过,帝国CMS的支持SQL语句的标签是否支持读取外部数据源,管理员WC的回复是只支持同一个数据库中的数据的读取,其实这个不难理解,实际是就帝国CMS的SQL数据调用功能不支持外部数据源的调用,因为如果是多套程序安装在同一个数据库下,那本身就可以当作同一套程序来处理数据,如同一数据库中安装了论坛 和帝国CMS,直接把论坛的数据表当作帝国CMS的自定义数据表来调用一样的道理。
帝国CMS的SQL标签的优点再于,SQL语句查询结果本身在标签内部作了处理,用户可以直接在标签中定义标题截取长度、是否显示栏目名称、时间格式化等,这些在PHPCMS及DEDECMS的类似标签中都是需要直接在标签的innertxt中自己作逻辑判断和调用函数处理的,这点对于普通用户还是比较方便的。毕竟,调用文章列表,要个性化的地方也就基本标题显示长度,时间显示格式,是否在前面显示栏目名及列表的模板样式,帝国这样的标签都可以很好的实现,够用了。
2)PHPCMS中的直接通过SQL语句调用数据的标签:GET标签
如带分页,示例(调用栏目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])} {/get} |
在我看来GET标签是PHPCMS中好用的标签,要查询什么数据,直接写好SQL语句,使用GET标签,并且可定自定义是否分页,分页每页显示的条数,分页的URL规则等等,GET标签之间的内容为读取出来的数组变量,可直接使用PHP模板语法输出,亦可调用全局函数或PHP原生函数进行数据处理后输出。整个处理过程很适合PHP程序员的思维。
GET标签的另一个优势是能够很方便的调用外部数据源,即其它程序的MYSQL数据库,并且不管是否在同一MYSQL中,不管是不在同一台服务器,只需要在PHPCMS后台数据源管理处添加外部数据源的主机如localhost或服务器IP,然后填写数据库名、数据库用户名及数据库密码,测试连接成功后,后面即可直接在模板中使用GET标签调用外部数据源。
get 标签调用外部数据示例(调用数据源为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:http://www.pmume.com/viewthread.php?tid={$r[tid]} 更新日期:{date('Y-m-d', $r[dateline])} {/get} |
这点是非常方便的,一个文章主站+论坛 ,然后直接在主站首页调用论坛中的帖子,使用GET标签,可以以任何想实现的方式来读取论坛数据库的帖子,而其它程序中则只能通过JS调用或者通过改程序来实现。
GET标签的优势还在于,如果是进行二次开发,新建一个abc.php页面,只需要引用PHPCMS的公共文件,即可直接使用PHPCMS的模板引擎,然后在模板目录下新建一个abc.html即可在模板中使用GET标签调用任何想调用的内容。
如果MYSQL数据库不在同一服务器,在PHPCMS后台填好数据库设置,然后在远程服务器的MY.INI文件中设置禁用域名DNS反向解析,然后使用GET标签远程调用,速度会和同一台服务器相差无几,跨服务器数据调用非常方便。
不过,我还不满足于此,还希望GET标签能直接调用其它类型的数据库数据,如SQL server中的数据,如果能实现这样,那跨语言平台整合那将非常方便了。如主站是PHPCMS的,论坛是.NET,这样如果GET标签也支持读SQL server中的数据,那真是无敌了。
3)DEDECMS中直接通过SQL语句调用数据的标签:SQL标签
如调用文章表中会员ID为1的会员发布的10条文章
{dede:sql sql='Select * from dede_archives where mid=1 limit 10'} <a href='/plus/view.php?aid=[field:id/]' target='_blank'>[field:title/]</a> {/dede:sql} |
从DEDECMS中SQL标签文档来看,该SQL标签直接使用SQL语句来调用简单的文章列表,还是非常方便的,处理好的innertxt也支持用PHP函数处理后输出,这点和PHPCMS中挺像,但是貌似没有PHPCMS的GET标签强大,不支持分页,更不会支持分页的自定义URL格式。
当然,一般的用于侧边栏调用一些内置标签不方便实现的数据,够用了。
从这三款CMS的SQL标签来看,个人还是更喜欢PHPCMS的GET标签,而DEDECMS中的SQL标签也比较灵活够用,至于帝国CMS的标签的SQL语句查询,虽然他和DEDECMS的SQL标签功能相当,并且在帝国CMS体系内,支持SQL查询,也是一个非常不错的功能,但感觉上还是不太喜欢,可能根本问题,还是因为本身就对帝国CMS标签的处理方式有很大“偏见”吧。


猜你喜欢
- “我们将围绕B2B企业客户,建立中小企业“人才+能力提升”需求动态系统,逐步开发
- Wordpress MU是Wordpress的多用户版本,因为程序结构的关系,Wordpress MU并不一定能兼容Wordpress的插件
- 1、搜索引擎不友好搜索引擎对于难以处理和识别的打字稿、复数、连字号等等各种各样的问题,搜索的准确度会降低。显然,如果搜索引擎刻意
- 如果你想禁止Google收录你的网页内容,你可以在网页代码里使用Google支持的系列Meta标签。但如果你有些网页希望文字内容被收录,但又
- 这个我只是简单的做下修改,没有对程序文件进行较大的变动。整合原理:dede5.5会员的mid值是一个自增的字段,也就是每添加一行会员记录这个
- SMTP Relay能够让你使用当前电子邮件服务通过电子邮件地址来发送电子邮件讯息。比如,你可以继续使用电子邮件工具(如Microsoft
- sendStaticResource 方法是非常简单的。它首先传递父路径和子路径给File类的构造器,从而对java.io.File类进行了
- 月光博客最擅长这个,我们来看看月光最近的这类帖子:十个常用的S60手机软件十大经典JAVA手机游戏8个有用的WP的SQL语句十个避免RSS订
- godaddy最新25%以上优惠码,30%优惠码:gdz127dc (产品通用消费满100美元可用)godaddy最新25%以上优惠码,29
- 在实际应用过程中可能会遇到DNS解析错误的问题,就是说当我们访问一个域名时无法完成将其解析到IP地址的工作,而直接输入网站IP却可以正常访问
- 在各大Web 2.0标杆网站、门户网站及电信运营商的推动下,2008年作为中国互联网SNS元年,SNS在国内的发展异常火暴。2009年,UC
- 要使你的IIS服务器支持伪静态重写,按以下步骤来:1. 安装重写插件Rewrite.dll 如果你的 IIS 服务器加载过 Rewrite.
- 很多朋友可能是空间也就是虚拟主机,自己就没有权限来管理apache的httpd.conf文件了,自然就不太可能可以在这上面写静态规则了,下面
- 我从www.xrnic.cn开通了一个独立IP LINUX空间,空间支持伪静态功能。由于网站根目录下安装的是DEDECMS,bbs目录下安装
- 网易科技讯 5月13日凌晨消息,微软今天正式在全球发布了包括MS Office 2010在内的商用平台软件。和以往相比,新商用软件平台最大的
- 提示需要输入密钥,选择【我没有密钥】选择有桌面体验的自定义新建C盘 100G选择100G的主分区,下一步PS:未分配的空间,先不理,安装完系
- WordPress将其所有信息片段(包括文章、页面、评论、博客链接、插件设置等)存储在MySQL数据库中。 虽然WordPress用户可以通
- 作为网络管理员,不少朋友也同时负责单位的网站开发维护的工作,对于WEB开发我想大家都比较精通,可是对如何编写安全的脚本代码和入侵者如何通过W
- 硬件查看命令系统# uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本#
- 今天逛网站逛到bbPress官网,看到bbPress更新到bbPress 2.0正式版,没事想下载来折腾了下。点击Download链接的时候