帝国、PHPCMS及织梦对比(九):关联类别属性

2011-10-08 17:25:53来源:chinaz作者:

在使用CMS套站时进行栏目结构规划时常遇到这样一种情况:每个栏目下想再细分一些类别,如果以栏目的形式添加,很多栏目下都会有这些重复的类别,这样一来就导致很多重复和栏目。所以需要考虑直接在字段属性类别的方

在使用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标签联合查询才行,效率稍低,也不太方便。

PHPCMS:

PHPCMS模板中内置了字段类型,文章模型中默认没有开启,在系统设置->模型管理中的字段管理中开启类别字段。

\

然后在系统管理->相关设置->类别设置中添加类别:

\

添加文章里即可在使用类别选项来对文章归类了:

\

前台调用使用TAG标签或GET标签调用即可。如果使用TAG标签则只需要在后台模板管理处可视化选择类别类型生成TAG标签即可方便实现调用。

\

如果是GET标签,则直接在SQL语句中加下typeid=’类别ID数字’可也。

帝国CMS:

帝国CMS默认没有类别字段,不过亦可以通过自定义字段的形式添加,帝国的优点在于自定义字段可以添加在主表中,这一点非常不错,在新闻数据表模板中添加一个typeid字段:

\

选择添加在主表中,然后在“管理系统模型”中修改系统模板开启,在录入项中显示该字段即可在文章发布表单中显示了:

前台数据调用则需要使用万能标签或灵动标签中写SQL语句来调用了,条件为typeid=”病因”,条件中需要写汉字,这点不太爽。

总体分析来看,类别功能不是什么大功能,只是增加一个关联自段,方便数据分类,不同CMS中都可以变相实现,但总体来看还是PHPCMS默认设置了该字段,无论是类别自定义添加还是前台调用都方便些。从普通用户来讲,同是需要使用SQL来调用,帝国则比织梦稍方便些,因为他自定义的字段显示在主表中了。

赞助商链接: