帝国、PHPCMS及织梦对比:联动类别属性

2016-02-19dedecms教程
136

在使用CMS套站时进行栏目结构规划时常遇到这样一种情况:每个栏目下想再细分一些类别,如果以栏目的形式添加,很多栏目下都会有这些重复的类别,这样一来就导致很多重复和栏目。所以需要考虑直接在字段属性类别的方式来添加,发文章时直接选择类别来给文章归类。不知道站长朋友们实际处理过程中有没有遇到这样的问题,但落叶确实感受挺深了,在涉及医疗性质的站点时,每个疾病病种下面有多个子病种,然后子病种的文章类型又分为病因、症状、诊断、治疗、预防、科普、建议等等,每个栏目的文章基本都需要分这些类别,如果以子栏目的形式添加,50个子病种就要多添加300多个子栏目,这样不管是对网站结构还是 SEO来讲都是灾难,所以这个时候“类别”字段显得比较重要。

不同的CMS基本都有内置或者提供类别设置的功能,只是表现形式不同,设计细节不同,扩展灵活性也不同,本文中落叶拟对PHPCMS、帝国CMS及织梦CMS中的类别这点作一些细节性对比。

织梦CMS:

DEDE中没有很明确的类别功能,可以变相实现的体现方式是”自定义属性”,在自定义属性中多添加几个属性,发布文章时,勾选这些属性,然后调用时按照这个属性分类进行调用即可。

类似下图的最后一项:

帝国、PHPCMS及织梦对比:联动类别属性_跟版网

想法貌似不错,于是找DEDE添加自定义属性的地方,然而结果似乎不是那么顺利。

帝国、PHPCMS及织梦对比:联动类别属性_跟版网

一句“为了数据安全起见不允许用户增加其它类型”,那么对于普通用户,如果非要实现,那只有修改DEDE内置的属性名称来变相实现了,如把“头条” 改为“病因”,“推荐”改为“症状”,但这样的结果是失去了原有的“头条”和推荐功能。自定义文档属性结果发现是没办法自定义的。不好意思,遇上落叶这样死钻的人还真不相信你所说的安全问题,事实上增加一个自定义属性,也没有什么安全的,直接在数据库中修改吧。

DEDECMS的自定义属性记录在wmd_arcatt数据表中的,直接在PHPMYADMIN中可视化插入几个自定义属性:

帝国、PHPCMS及织梦对比:联动类别属性_跟版网

这样似乎就够了,但实际,DEDECMS中文章表中调用自定义属性的字段类型采用的是set类型,那里采用了白明单,限制了允许使用的att属性,所以仍需要修改文章表wmd_archives中的flag字段,按格式增加刚刚添加的三个属性的att值,即如下:

帝国、PHPCMS及织梦对比:联动类别属性_跟版网

这样,在发布文章的表单处自定义属性一栏就显示出了刚添加的一些属性,发布文章时勾选,前台调用,使用flag=”m”即可调用症状类别的文章了。

{wmd:arclist row="10' titlelen='24' orderby='pubdate' flag=’m’}

[field:textlink/]([field:pubdate function=MyDate('m-d',@me)/])

{/wmd:arclist}

这里需要注意的是,因为DEDE的flag标签解析后是采用like查询,上图中添加的by其实是不正确的,可以使用多字母,但是首字母不要有重复,如上图中所示的,使用flag=’b’来调用加精的文章时,by类别的文章也会被调用出来。

当然DEDECMS中也可以自定义一个选项自段来实现,通过添加“使用radio选项卡”或“Checkbox多选框”,然后在默认值处填写被选择的项目来实现亦可,只是因为这里DEDE自定义字段只能添加在副表中,调用时需要关联查询,效率会低些,一般不建议这样做。

自定义字段设置:

帝国、PHPCMS及织梦对比:联动类别属性_跟版网

内容发布表单界面显示的自定义类别字段:

帝国、PHPCMS及织梦对比:联动类别属性_跟版网

这样可以变相实现,只是在调用时,不方便把附加字段作为调用条件,需要使用DEDE的SQL标签联合查询才行,效率稍低,也不太方便。

PHPCMS:

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

帝国、PHPCMS及织梦对比:联动类别属性_跟版网

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

帝国、PHPCMS及织梦对比:联动类别属性_跟版网

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

帝国、PHPCMS及织梦对比:联动类别属性_跟版网

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

帝国、PHPCMS及织梦对比:联动类别属性_跟版网

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

帝国CMS:

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

帝国、PHPCMS及织梦对比:联动类别属性_跟版网

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

帝国、PHPCMS及织梦对比:联动类别属性_跟版网

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

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

The End
联动

相关推荐

自定义表单列表编辑内容联动地区显示为数字
解决方法 打开 \dede\templets\diy_edit_content.htm 找到 ?php$formfields = ;foreach($fieldlist as $field=$fielddata){$allowhtml = array(htmltext);if($row[$field]==) continue;if($fielddata[1]==img){$row[$field] = input name=photo type=file /...
2017-12-20 dedecms教程
317

dedecms织梦自定义表单内容列表编辑联动地区显示为数字的解决方法
解决方法 打开 \dede\templets\diy_edit_content.htm 找到 ?php$formfields = ;foreach($fieldlist as $field=$fielddata){$allowhtml = array(htmltext);if($row[$field]==) continue;if($fielddata[1]==img){$row[$field] = input name=photo type=file /...
2017-09-13 dedecms教程
362

dedecms织梦地区联动在当前页面title加入选择的地区名
织梦分类信息模型在列表页选择地区联动时,想要在title北京市东城区学院 - 我的网站/title 或者 title广东省广州市白云区学院_我的网站/title 效果展示 修改教程 打开 \include\arc.sglistview.class.php 找到 $this-Fields[typeid] = $this-TypeID; 在它的...
2017-07-17 dedecms教程
331

织梦同一页面调用多个相同的js联动菜单
!-- //选择地区的二级分类(非通用调用) function selNext(oj, v) { var newobj = oj.options; var selv = parseInt(v); var maxv = parseInt(v) + 500; while(newobj.length 0) { oj.remove(0); } clear(oj); if(selv==0) { aOption = document.createElemen...
2017-03-21 dedecms教程
309

dedecms织梦enums联动数据nativeplace.php格式化函数
织梦二次开发记录 require_once (DEDEINC./enums.func.php);//这个是官方的一些方法,不够用 require_once (DEDEDATA./enums/nativeplace.php);//缓存的地区enums 官方只提供了获取一级数据: $arr = getTopData(nativeplace); print_r( $arr ); 自己扩展一...
2016-12-12 dedecms教程
508

DEDECMS分类信息按联动类别筛选的实现方法
注意:本教程只在DedeCMS V5.6上测试过,v5.7sp1的话一般也会通用,请自行测试! 实现方法: 1. 修改include\taglib\infolink.lib.php,找到: require_once(DEDEROOT./data/enums/infotype.php); 在其下面添加: require_once(DEDEROOT./data/enums/自定义...
2016-12-12 dedecms教程
1260