PHPCMS、帝国及织梦对比分析(九)之关联类别属性
来源:pmume.com 时间:2011-08-26 12:45:21
在使用CMS套站时进行栏目结构规划时常遇到这样一种情况:每个栏目下想再细分一些类别,如果以栏目的形式添加,很多栏目下都会有这些重复的类别,这样一来就导致很多重复和栏目。所以需要考虑直接在字段属性类别的方式来添加,发文章时直接选择类别来给文章归类。不知道站长朋友们实际处理过程中有没有遇到这样的问题,但落叶确实感受挺深了,在涉及医疗性质的站点时,每个疾病病种下面有多个子病种,然后子病种的文章类型又分为病因、症状、诊断、治疗、预防、科普、建议等等,每个栏目的文章基本都需要分这些类别,如果以子栏目的形式添加,50个子病种就要多添加300多个子栏目,这样不管是对网站结构还是SEO来讲都是灾难,所以这个时候“类别”字段显得比较重要。
不同的CMS基本都有内置或者提供类别设置的功能,只是表现形式不同,设计细节不同,扩展灵活性也不同,本文中落叶拟对PHPCMS、帝国CMS及织梦CMS中的类别这点作一些细节性对比。
织梦CMS:
DEDE中没有很明确的类别功能,可以变相实现的体现方式是”自定义属性”,在自定义属性中多添加几个属性,发布文章时,勾选这些属性,然后调用时按照这个属性分类进行调用即可。
类似下图的最后一项:
想法貌似不错,于是找DEDE添加自定义属性的地方,然而结果似乎不是那么顺利。
一句“为了数据安全起见不允许用户增加其它类型”,那么对于普通用户,如果非要实现,那只有修改DEDE内置的属性名称来变相实现了,如把“头条”改为“病因”,“推荐”改为“症状”,但这样的结果是失去了原有的“头条”和推荐功能。自定义文档属性结果发现是没办法自定义的。不好意思,遇上落叶这样死钻的人还真不相信你所说的安全问题,事实上增加一个自定义属性,也没有什么安全的,直接在数据库中修改吧。
DEDECMS的自定义属性记录在dede_arcatt数据表中的,直接在PHPMYADMIN中可视化插入几个自定义属性:
这样似乎就够了,但实际,DEDECMS中文章表中调用自定义属性的字段类型采用的是set类型,那里采用了白明单,限制了允许使用的att属性,所以仍需要修改文章表dede_archives中的flag字段,按格式增加刚刚添加的三个属性的att值,即如下:
这样,在发布文章的表单处自定义属性一栏就显示出了刚添加的一些属性,发布文章时勾选,前台调用,使用flag=”m”即可调用症状类别的文章了。
{dede:arclist row='10' titlelen='24' orderby='pubdate' flag=’m’}
[field:textlink/]([field:pubdate function=MyDate('m-d',@me)/])
{/dede:arclist}
这里需要注意的是,因为DEDE的flag标签解析后是采用like查询,上图中添加的by其实是不正确的,可以使用多字母,但是首字母不要有重复,如上图中所示的,使用flag=’b’来调用加精的文章时,by类别的文章也会被调用出来。
当然DEDECMS中也可以自定义一个选项自段来实现,通过添加“使用radio选项卡”或“Checkbox多选框”,然后在默认值处填写被选择的项目来实现亦可,只是因为这里DEDE自定义字段只能添加在副表中,调用时需要关联查询,效率会低些,一般不建议这样做。
自定义字段设置:
内容发布表单界面显示的自定义类别字段:
这样可以变相实现,只是在调用时,不方便把附加字段作为调用条件,需要使用DEDE的SQL标签联合查询才行,效率稍低,也不太方便。