发布phpcms2008的点评内容模型
调试了一个PHPCMS2008的点评内容模型,这个是精简的版本,由于最近还很忙,稍后会发布完善版
这个点评内容模型是仿照大众点评网做的,一部分功能是模拟的
具体操作为:
1.进入后台,进入系统设置,点击模型管理,选择导入模型
2.按照上图填写信息,然后将压缩包中的dianping.model文件上传
3.由于很多字段经过了自定义,所以还要把压缩包中show_dianping.html文件上传
上传目录为 ./templates/default/phpcms/ 目录
4.上传的模板起名为点评内容页
5.到后台的内容管理中新建一个栏目,使用点评模型,然后模板的内容页模板选为点评内容页
前台演示:http://dianping.youtianxia.net/2008/1202/1.html
模型制作的截图是
模型规则下载地址是:PHPCMS2008点评模型下载
从数据库分表分析PHPCMS2008的内容管理
PHPCMS2008数据结构相对于07版有了很大的变动,而这些变动也自然而然的体现在了它的内容的处理流程方面。接下来,我们简单的看下内容模块
首先,我们先回顾下07版的内容模块是如何工作的,我们找到PHPCMS_ROOT(也就是根目录)的module下,我们会发现,像文章和图片这些基础内容模块是以文件夹的形式存在的,他们是相互独立的。文件夹中必须包括的有以下几个基础的文件admin.inc.php,myitem.inc.php,type.inc.php,show.inc.php,search.inc.php,list.inc.php,index,inc.php等,以及admin,copy,include,install,special,uninstall几个文件夹。单从名字就可以看的出,所有的处理流程,这里都囊括了,其中还包括模块的安装卸载。这种处理已经很是优化了。现在我们来看看08版,module这个很核心的文件夹不见了,那为什么我们在后台还是可以很方便的操作内容模块呢,它到底去了哪里。我们只能去数据库查看其中的端倪了。
07版的每个频道是只能绑定一种内容模块的,比如,我建一个频道是新闻的,那我就把这个频道设为article,于是数据库中,就有了类似这样的两个表article_1(注意:这个1是该频道的ID号)和article_data_1,当我们要在这个频道加入图片(picture)的内容时,在理论和实际操作都是不允许的,我们只能重新建一个专门放图片类的频道,这也是为什么08版要大动手术的根本原因。08版的数据结构是可以由用户自己定义的,比如我们建立一个新闻的内容模块(官方叫内容模型,他们说的可能更确切些),我们可以自己定义一个表,表的格式会按照phpcms_c_xxx(注:phpcms_是前缀,c应该是必须的,而xxx是你自己定义的)。其实这个表从本质上只是用来储存内容的,我们要添加的内容其实要从phpcms_content,phpcms_content_count,phpcms_content_postition绕一下,内容的ID也是以phpcms_content这个表为标准的。也就是说,这个CMS系统的所有文章的索引都在phpcms_content中。那我们千辛万苦定义的内容模型的结构在哪里呢?让我们看看phpcms_model这个表,你会发现几乎所有的内容模型都列在这里了,而具体的设置,比如那个选项是什么都存在phpcms_model_field中。而那些附加的非内容性的模块都被很聪明的放在另外一个表phpcms_module中了。
这只是本人一点个人看法,希望大家指正,谢谢
简析PHPCMS的模板解析工作流
现在很多PHP系统都有自己模板系统,PHPCMS和DISCUZ都是用的自己模板库,他们都称得上超级高效。
PHPCMS的模板解析函数库位于PHPCMS根目录的INCLUDE中,这个从3.0到现在的2008一直都没有变过。它的名字叫template.func.php,从文件名就可以知道,它是一个模板方面的函数库文件。
它的工作流程是这样的,先由执行程序调用根目录下INCLUDE中主函数库global.func.php中的template函数,并有它指定调用模板的位置和模板名称,同步调用template.func.php下的template_compile函数对模板规则进行处理,而其中模板的编译解释就由template_parse的正则函数来搞定了。
我们找到template_parse命令可以看到,我们模板中常用的{if}{loop}{tag}标签,这里都用提及。2008版中最为红火的{get}万能标签的出处也不外乎
$str = preg_replace(”/\{get\s+([^}]+)\}/e”, “get_parse(’\\1′)”, $str);
$str = preg_replace(”/\{\/get\}/”,”<?php } unset(\$DATA); ?>”,$str);
这么看来,phpcms的模板系统还是蛮简单,呵呵
希望对大家有所帮助。
PHPCMS2008模板系统更新的简单分析
PHPCMS2008版在很多方面都较2007版有了较大进步,其中在操作的人性化方面尤为突出。其实PHPCMS在2007版的时候,我想大家跟我一样用到最多的是他的模板系统,因为我们往往是在运营一个网站,那些功能性的东西,我们关心的很少。只要它好用,用起来顺手就可以了。界面就不一样了,大家用的是同一套CMS,在许多方面都有类似,要想和别人不一样,我们就要在界面上下功夫了。
PHPCMS2007的模板系统已经相当完善,在此我们可以简单的分析一下
1,目录结构
PHPCMS是模块化很细致的系统,分为系统模块和扩展模块两种(我自己起的名字,不知道官方同不同意)。其中PHPCMS和MEMBER是少数的必选和不可更改的模块,他们的模板对应在PHPCMS_ROOT/TEMPLATES/DEFAULT/下的PHPCMS和MEMBER两个文件夹下,其中有根据不用的位置做了不同的区分,很是方便。值得注意的是界面系统的顶部和底部部分即HEADER和FOOTER,也位于PHPCMS这个文件夹中。
可扩展模块则各有不同了,他们是在TEMPLATES/下跟PHPCMS文件夹同级目录中,名字也跟他们名字相对应。我们用的最多的article在这样。这些在PHPCMS的模板教程里都有详细的描述,我就不累述了,现在说重点:由于2008版引入了自定义模型的功能,article这个目录自然消失了,因为已经没有默认article模块的这个说法,那我们要修改文章模块的模板应该去哪里呢?去看看PHPCMS这个目录吧,你会发现这里多了一个show_为前缀的HTML文件,这种类型的文件之前只有在文章和图片这种模块才会有。这就对了,当你在PHPCMS2008增加一个新的自定义模型是,这个PHPCMS系统模块里就需要有一个show_的模板文件与这个模型相对应,这就是2008版模板系统的最大变化。
同样发生目录变化的还有special和search,因为这两个模块的等级已经提高,这是多么可喜的变化。search里面居然还发现了分词,这简直太了解劳苦大众的心声了。
2,模板名称规律
在上面的目录结构介绍中我们其实已经发现了PHPCMS模板系统命名特点。2008的模板命名中,配置文件的命名我越来越喜欢,大家可以看看现在的每个模板的目录,templatenames.php改为name.inc.php,tags_config.php改为tag.inc.php,名字更加符合大家认知规范,偶喜欢。在各个模块的调用tag_类型模板中,又增加了几个新的调用类型,很是方便,先抛砖引玉了,search_index,希望大家指正
对2008版PHPCMS的一些建议
等了这么长时间,终于等到08版面世了,很不错的版本,辛苦淡淡风这些弟兄们了
为了让我们的 CMS做得更好,兄弟在这里提一些建议
1,现在08版一个很重要的进展就是碎片的管理
的确,现在大部分的门户站点的页面制作都是依靠碎片这种东西来制作的,虽然名称各个不同,但都是一回事,我看到,现在这个碎片的使用不是很方便,能不能把碎片的管理精确到节点(也就是栏目),可以精确的知道碎片的位置到底是哪个页面上的,最好能跟栏目树放到一起,这样我们找起来很方便,不用在按照各种分类再查找了
2,现在CMS的标签调用已经很人性化了,不过,我觉得能不能在添加一种调用,就是纯粹地用代码的方式,类似于3.0,这样两种调用方式共存,有中文名称的标签调用,是可以复用的,而那种代码方式的调用就用一次就可以不去管了,这样在一个调用频繁的CMS系统中,可以不用费那么多的时间去起名字,找调用,用一次生成一次,这种方式在很多门户站点叫机器人调用,希望参考
3,现在发现08的模板系统好像没用什么大的改动,可以承认,PHPCMS的模板系统是很优秀的,不过还是有很多地方有待改进,举个例子,当用PHPCMS进行建站时,往往会因为不知道该用什么模板名字而发愁,这种模板名字的规则是不是能够改进一下,或者能够进下数据库什么的,或者在某些地方做些提示
4,我最期待的其实是08版在内容模块方面有很大改进,不过至少在第一轮测试,我没有看到我想要的,个人认为一个CMS的主内容类型只要包括文章,图片,专题三种就足够了,而且这三个类型的内容可以在一个节点下面共存,我们只要有个类型字段描述一下就可以了。这样我们的内容可以做的更加灵活
5,我现在最期待的是CMS的二级域名绑定的更方便更规范,我可不想再用baseon这种东西在做我的模板了,希望可以加以改进
另:08版的系统结构整理的很规范,我个人很喜欢,我会继续学习的,把你们新的技术研究透
祝PHPCMS一切顺利,成为最好的PHP的CMS

