K9 通用版 博客版 主题版 地方门户版 企业版 |   企业(ASP) 分类 使用 分享 疑问 模板 建议 帮助 错误 其他
                          +新建主题 [Ajax]
                          填写帐号密码即可完成注册
                          +新建话题 最新回复排序 最新主题排序 精华帖子

                          将下拉列表绑定栏目(原创)

                          1Next >

                          killhook 发表于:13-06-18 23:36 [添加收藏] 楼主 [回复] #Top#
                          killhook 人气:30 积分:44 金币:738

                          前言:

                          众所周知,kingcms的碎片支持绑定栏目,这个功能很实用。相比起来,模型字段是不支持绑定栏目的,但就算支持,在开发项目的实际场景中,使用率也是非常低的,但客户群体总是一群凶悍的存在,那么我现在手里的这个项目,加上这个功能也理所?#27604;弧?/p>

                           

                          我这个方法不是很好,因为这会建立过多的字段,是很浪费的行为(虽然比建立栏目要好得多)。

                          所以我下一步准备改进这个方法变为一个字段就可以了,绑定栏目以下拉列表项里的值来判定,比如

                          选项值|选项显示值|栏目ID

                          0|北京新闻|2

                          1|上海新闻|3

                           

                          不过今天先把这个发出来吧。

                          So。。。。准备。。。开搞。。

                           

                          使用场景:

                          客户需求做一个简单的新闻站,也就意味着,这个项目的所有数据是基于文章模型的,一级栏目5个,每个一级栏目下划分二级栏目若干,每个二级栏目下划分三级栏目若干。此?#27604;?#29992;栏目来划分的话。。。。那得建立多少个栏目啊。。残念。。。

                           

                          所以,最好的办法是在文章模型中加上下拉列表来进行所属二三级栏目的确认。

                           

                          但问题也来了。。当你把所有的二三级下拉字段建立好后,不管去哪个栏目(所有栏目基于文章模型)添加文章。这个下拉列表中的选项全?#30475;?#22312;,很不好看。而且那一长条列表?#19981;?#20196;编辑?#30475;?#36873;择时都抓狂。

                           

                          那么,可以绑定栏目的下拉列表,应运而生了。。

                           

                           

                           

                          修改源码:

                          第一步,建立绑定栏目字段。。

                           

                          设计表king_field.

                          新建字段 knodes 类型 char 长度 255 允许空。

                           

                          第二步,建立节点标题

                          打开文件/portal/language/zh-cn.xml

                          搜寻kdefault1

                          在其下面加上

                          <knodes>绑定栏目</knodes>

                           

                          第三步,建立字段数据存储?#26696;?#26032;

                          打开文件/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行

                          这里应该是注释“//长?#21462;?#25152;在行。。

                          请在“//长?#21462;奔啊?/默?#29616;怠?#20004;个if之间加上以下代码

                                            if(in_array($type,array(4))){//如果是下拉列表

                                                    $_array=array(array('knodes',0,0,255));//此输入框的默?#29616;?#21450;最大值

                                                    $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);//格?#20132;?#21518;并入变量s

                                                    }

                           

                          寻到640的sql语句

                          在末尾加入knodes

                          $_sql='ktitle,nsizemin,nsizemax,kdefault,koption,nstylewidth,nstyleheight,khelp,knodes';

                           

                           

                          好了,至此大家已经成功一大半了,下面是最后一步

                           

                          第四步,建立字段解析

                          打开文件/portal/core.class.php

                          寻到284?#20982;?#21491;-?#19994;?#36825;句-------------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行  ?#19994;?#36825;句-----------

                                   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

                          ?#27604;唬?#21333;个栏目也可以。


                          1064) 数据查询错误:syntax error, unexpected '-'
                          1.192.188.* 发表于:13-06-19 14:46 沙发 [回复] #Top#
                          KingCMS官方网站网友
                          king cms 的留言板模块怎么用啊
                          xue0666 发表于:13-06-21 08:42 4楼 [回复] #Top#
                          xue0666 人气:41 积分:431 金币:11562
                          不错,
                          农村娃 发表于:13-06-30 23:15 6楼 [回复] #Top#
                          农村娃 人气:157 积分:563 金币:2209
                          没明白作用··但是感觉有用!
                          freecms 发表于:17-05-11 16:35 7楼 [回复] #Top#
                          freecms 人气:0 积分:65 金币:20
                          过来学习一下
                          pgzx995 发表于:17-05-12 08:35 8楼 [回复] #Top#
                          pgzx995 人气:0 积分:802 金币:2165
                          天书,天书,这一定是传说中的天?#26469;?#20070;!
                          zhyc 发表于:18-03-06 22:57 9楼 [回复] #Top#
                          zhyc 人气:8 积分:371 金币:1311
                          mark

                          1Next >

                          发表回复

                          帐号 匿名发布 审核后可见 [加载完整在线编辑器]
                          内容
                          验证码
                          KingCMS 内容管理?#20302;?/a>

                          关于我们 联系我们 广告报价 付款方式 站点导航

                          Copyright © 2004-2015 Focuznet All rights reserved.

                          广州唯众网络科?#21152;?#38480;公司 粤ICP备08008106号

                          福建快3遗漏数据

                                                                          北京十一选五开奖查询 老时时图五星 踢球者手机比分 新时时五星技巧 时时彩计算软件 街机游戏棒球小子下载 时时彩号码开奖统计 福建时时公式规则 北京pk开奖冠亚和 游戏大全免费下载