梁远辉的Blog

记录个人的一些事情、一些心情。

« CMS方面的正在开始推荐一下QQ旋风 »

走进KingCMS的“代码源”

一个程序的质量如何,是看代码的;一个程序员呢,笔者觉得是看品质的。

KingCMS是一款开放源代码的建站程序,我想不少站长已经知道这款小巧的程序,笔者使用完这款小巧的程序之后,就喜欢上这种风格的程序了。

如果你是一位代码爱好者,相信有听过TSYS这个名字,在网上得到的简介都是“非常遗憾,2.0刚刚出测试版,作者就好像人间蒸发一样消失了,官方网站也在不久后处于管理状态,不过对于一个免费开源,没有版权的CMS来说我们也没有什么可要求的!在TSYS的各个版本中均没有出现过重大的安全漏洞而且对于目前1.1来说已经是很完善成熟的了,TSYS和一般的Asp的CMS不大一样,他的功能并非由本身而定,而是根据使用者的能力而定。使用者越厉害 TSYS本身也可以变的更厉害。强大的诸如碎片等的信息管理,可以将信息在显示的时候重新整合,说白了就是只有对TSYS非常熟悉的人才可以将TSYS的优势发挥出来,因此,光就这点也就注定了TSYS流行不起来,除非具有人性话操作的修改版本出来。”

笔者现在看来,KingCMS其实就是在完成TSYS的另一重使命,让更多的没有编写动态语言脚本能力的站长可以做出强大的网站。如果说TSYS不编写足够多的功能,那么功能就需要使用者去自己写代码来增强,它只是提供了一个框架。如果说TSYS已经内置足够的功能,让使用者会使用,就能弄出很强大的网站。TSYS做到了第一个如果,没有做到第二个如果。KingCMS做到了这两个如果,特别是在更替使用更高版本的内核的时候。

回到标题来,KingCMS的代码源是什么呢?标题使用一对双引号,就知道不一定是指那些动态语言的源代码了。作为一位站长,总得要掌握最基本的HTML格式编码,就算不会编写,也会看得明白是什么意思,可以理解为电脑基础知识之一。作为CMS的话,主要是提供一个建立网站和管理网站的工具而已。

工具是网站顺利运营的基础,这就要考虑到工具的易用性和强大性。网页是由HTML代码组成的,HTML代码除了代码就是文字,而程序最需求的就是管理好文字的输出和输入。所以从这个角度入手,如果CMS能把整个页面肢解到每个元素,能自主地控制每个元素的输入和输出,就是完美的CMS的。

举例来说:

比如一个链接:<a href="" title="" target=""></a>,里面就有四个可输入的部分,包括<>括号里面的,和两个括号<>之间的。懂得HTML代码的朋友就明白,括号<>里面的是链接的属性,括号<>外面是链接的对象。这两个地方要么需要手工来制定,要么需要程序来指定。

CMS可以完成的事情就是,把数据填充到数据库当中,在录入部分工作已经完成。接着,CMS再把数据显示出来,输出到指定的HTML当中,接着以上的例子:<a href="http://www.kingcms/" title="kingcms" target="_blank">KingCMS</a>,这样一来,这个链接的对象就是KingCMS,它是被链接到网址为:http://www.kingcms.com/的网址,移动鼠标到KingCMS的时候,提示的文字是“KingCMS”,点击的时候是从新窗口打开。

有朋友会疑问,一个这么简单的链接,为什么需要CMS来输出,手工编写不就得了吗?没错,是很简单,再一个例子。

输出10个这样格式的链接:<a href="" title="" target=""></a>

再输出10个这样的格式的链接:<a href="" title=""></a>

接着需要在这20个链接之后,插入一条斑马线。

再接着重复输入前10个格式的链接,以及第二个10个格式的链接。

再插入斑马线,重复五次。这种页面做10个。

请问以上的工作量还是手工能很快弄好的吗?如果还是回答能很快,那好,如果我要修改随机其中几个链接的链接。还能不能很快完成呢?

除了链接,需求又发生变化了,再在链接前面加入一个图片<img src="" alt="" />,而且是按照一定的规律,在第二个10个的一组链接前面加入的。<img src="" alt="" /><a href="" title=""></a>。加上每张图片的描述,地址不一样,是不是需求更加复杂了?

CMS就能很方便地完成这些空缺位置的填充。其实,大部分的CMS都能完成这样的功能,那么区别在哪里呢?有些CMS是怕用户不会HTML代码,直接把<a href="" title="" target=""></a>替换成一个类似这样的标签{name:url},然后,在CMS的模板当中插入{name:url}就相当于输出了这个链接。有些CMS呢,就不去考虑封装这些链接,直接在链接当中插入要输出的数据标签。比如,<a href="{name:url}" title="{name:title}" target="{name:link}">{name:title}</a>,这样一来,这个链接的控制在于双引号里面的数据输出,而不是编成一个整体的链接再输出。

相比上面两种情况,第二种有着更加灵活的概念。因为每个元素都能控制,而不是受制于整体输出的链接,输出是什么就是什么,不能随便做调整。

上面使用了很简单的链接代码举例说明了CMS该控制什么才是最灵活的,究竟是控制整体的输出以傻瓜化操作,还是控制元元素,以达到千变万化。在这里,有基础的朋友可以反驳笔者的观点,毕竟两个的长处各不相同。但是笔者坚定认为,第二种输出情况是整个输出的灵活的灵魂所在。

KingCMS就是为了满足最大灵活地输出元元素而存在的程序。把HTML代码每块最小的元素控制在标签里面,以达到控制整个网站的结果。

当然,能把整个网站的最小单位元素细分出来,是一个理论性的观点,特别是出现在互动的网站当中,这种想法就更加夸张了。使用一个最简单的评论举例,评论功能当中,有作者,评论次数,评论标题,评论内容,回复评论内容,发表评论时间,评论者的IP,评论的表情。这些元素再产生叠层,如果每个最小内容元素都用标签来替换,就形成了很复杂的标签库了。再把这些标签循环输出,就更加复杂了。

评论只是一个例子,如果再举例类似UHome的互动功能,活动,群组,个人空间...一大堆标签,不是一般的架构能满足得了这种复杂的应用。

作为KingCMS怎么解决这些复杂的需求呢?从KingCMS作者Sin.CS口中了解到,为了实现这些复杂的需求,他已经换了5个CMS内核了。看回KingCMS的历史版本,从ACMS开始到KingCMS 3.x,再到KingCMS 5.x,再到KingCMS 6.x,再到还没有出来的KingCMS 7.x,5个内核,而且,除了公布的内核,还有死在胎中的内核,应该有7个内核了。因为,从笔者了解的Sin.CS,写了一个新的内核,第二天会推翻,又用两天写了一个新的,再推翻...为了达到更加完美的内核,满足未来5年的需求,不得不使用更加新的框架。

这就是KingCMS的魅力所在,这些一个又一个内核就是KingCMS的代码源。内核决定了KingCMS的前瞻性,Sin.CS的无穷追求决定KingCMS的内核永远更新。

这也是作为CMS的最大魅力。吸引着笔者下定决心为此付出更大的心血,直至让每位站长都有机会去了解KingCMS。为此,笔者开放了一个网站:CMSWhy.com,希望有兴趣的朋友多点访问,网站将会推出一些列的实例教程,教你怎样使用强大而灵活的KingCMS。

网站由网页构成,网页由代码组成,代码由CMS控制输出。就完成了网站的输出,使用相关浏览器,就能访问这些网页了。了解了这个最简单的原理,有兴趣的就让我们更加深入去挖掘网站是怎样炼成的吧。以此作为本文的结尾。

备注:题目为《走进KingCMS的“代码源”》,首发落伍。是篇关于KingCMS故事的文章,不是技术文章。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 91204

Copyright 2002-2010 gougliang.com. Some Rights Reserved.