1Next >
killhook | 发表于:13-06-18 23:36 [添加收藏] 楼主 [回复] #Top# |
---|---|
人气:30
积分:44
金币:738
|
前言: 众所周知,kingcms的碎片支持绑定栏目,这个功能很实用。相比起来,模型字段是不支持绑定栏目的,但就算支持,在开发项目的实际场景中,使用率也是非常低的,但客户群体总是一群凶悍的存在,那么我现在手里的这个项目,加上这个功能也理所当然。
我这个方法不是很好,因为这会建立过多的字段,是很浪费的行为(虽然比建立栏目要好得多)。 所以我下一步准备改进这个方法变为一个字段就可以了,绑定栏目以下拉列表项里的值来判定,比如 选项值|选项显示值|栏目ID 0|北京新闻|2 1|上海新闻|3
不过今天先把这个发出来吧。 So。。。。准备。。。开搞。。
使用场景: 客户需求做一个简单的新闻站,也就意味着,这个项目的所有数据是基于文章模型的,一级栏目5个,每个一级栏目下划分二级栏目若干,每个二级栏目下划分三级栏目若干。此时若用栏目来划分的话。。。。那得建立多少个栏目啊。。残念。。。
所以,最好的办法是在文章模型中加上下拉列表来进行所属二三级栏目的确认。
但问题也来了。。当你把所有的二三级下拉字段建立好后,不管去哪个栏目(所有栏目基于文章模型)添加文章。这个下拉列表中的选项全部存在,很不好看。而且那一长条列表也会令编辑每次选择时都抓狂。
那么,可以绑定栏目的下拉列表,应运而生了。。
修改源码: 第一步,建立绑定栏目字段。。
设计表king_field. 新建字段 knodes 类型 char 长度 255 允许空。
第二步,建立节点标题 打开文件/portal/language/zh-cn.xml 搜寻kdefault1 在其下面加上 <knodes>绑定栏目</knodes>
第三步,建立字段数据存储及更新 打开文件/portal/manage.field.php 这个是kingcms的字段管理文件 寻到313行的sql语句 在末尾加入knodes $_sql='ktitle,kfield,modelid,ntype,nvalidate,nsizemin,nsizemax,kdefault,koption,nstylewidth,nstyleheight,issearch,isadmin1,isadmin2,isuser1,isuser2,islist,khelp,isrelate,istitle,knodes';
寻到437行 这里应该是注释“//长度”所在行。。 请在“//长度”及“//默认值”两个if之间加上以下代码 if(in_array($type,array(4))){//如果是下拉列表 $_array=array(array('knodes',0,0,255));//此输入框的默认值及最大值 $str='<inputclass="k_in w400" type="text" id="knodes"name="knodes" value="'.htmlspecialchars($data['knodes']).'"maxlength="255" />';//输入框html $s.=$king->htmForm($king->lang->get('portal/label/knodes').'(0-255)',$str,$_array);//格式化后并入变量s }
寻到640的sql语句 在末尾加入knodes $_sql='ktitle,nsizemin,nsizemax,kdefault,koption,nstylewidth,nstyleheight,khelp,knodes';
好了,至此大家已经成功一大半了,下面是最后一步
第四步,建立字段解析 打开文件/portal/core.class.php 寻到284行左右-找到这句-------------case 4://单选 (下拉列表)
用if将原case里的语句包起来。如下 case 4://单选 (下拉列表) if(in_array($info['listid'],explode(',',$rs['knodes']))){
$c[]=array($f,0,0,255); $array_def=explode(NL,$rs['koption']); $array_select=array(); foreach($array_def as$val){ if(isset($val{0})){//不能为空值 $array_val=explode('|',$val,2); if(count($array_val)>1){//有分割符号 $array_select[$array_val[0]]=$array_val[1]; }else{ $array_select[$val]=$val; } } } $c[]=array($f,20,null,array_keys($array_select)); $s=kc_htm_select($f,$array_select,$data[$f]); $h=$this->help($rs['kid'],$rs['khelp']); } break;
寻到第773行 找到这句----------- if($group==1){ if($is==1){//后台调用 if(($rs['ntype']==0&&$f=='nattrib')||$rs['ntype']==99){//组输出,不需要标签 return$king->htmForm($rs['ktitle'],$s,$c,'',$h,0); }else{ return$king->htmForm($rs['ktitle'],$s,$c,substr($f,1),$h); }
将return $king->htmForm($rs['ktitle'],$s,$c,substr($f,1),$h);这句改为
if($rs['ntype']==4){ if(in_array($info['listid'],explode(',',$rs['knodes']))){ return$king->htmForm($rs['ktitle'],$s,$c,substr($f,1),$h); } }else{return$king->htmForm($rs['ktitle'],$s,$c,substr($f,1),$h);}
好了,大功告成。
多个绑定栏目以“,”分割 如 2,3,4 当然,单个栏目也可以。
1064) 数据查询错误:syntax error, unexpected '-'
Ta最近还发表过
[分享]
将下拉列表绑定栏目(原创)
(18-03-16)
[分享]
实用碎片,如果你要做类似论坛的楼层判断
(18-03-06)
[分享]
当把系统jquery版本换为1.7.2后
(17-05-13)
[分享]
删除栏目引起的其他栏目文章丢失BUG
(13-08-26)
[疑问]
为什么内容页不能分页
(13-08-01)
随机阅读
[模板]
求企业网站模板及数据库ASP~~
(13-03-12)
[错误]
安装门v1.0的时候sql报错.
(12-08-14)
[疑问]
网站模板要怎么做才算是好的
(12-03-31)
[其他]
论坛有点冷
(12-02-22)
[使用]
想请教一下,大家都用什么PHP编辑器?
(11-03-29)
|
1.192.188.* | 发表于:13-06-19 14:46 沙发 [回复] #Top# |
---|---|
|
king cms 的留言板模块怎么用啊
|
xue0666 | 发表于:13-06-21 08:42 4楼 [回复] #Top# |
---|---|
人气:41
积分:431
金币:11562
|
不错,
|
农村娃 | 发表于:13-06-30 23:15 6楼 [回复] #Top# |
---|---|
人气:157
积分:563
金币:2209
|
没明白作用··但是感觉有用!
|
freecms | 发表于:17-05-11 16:35 7楼 [回复] #Top# |
---|---|
人气:0
积分:65
金币:20
|
过来学习一下
|
pgzx995 | 发表于:17-05-12 08:35 8楼 [回复] #Top# |
---|---|
人气:0
积分:802
金币:2165
|
天书,天书,这一定是传说中的天道传书!
|
zhyc | 发表于:18-03-06 22:57 9楼 [回复] #Top# |
---|---|
人气:8
积分:381
金币:1336
|
mark
|
1Next >