<optgroup id="kkemm"><object id="kkemm"></object></optgroup>
<optgroup id="kkemm"><small id="kkemm"></small></optgroup>
<xmp id="kkemm"><menu id="kkemm"></menu>
<center id="kkemm"></center>
<center id="kkemm"><div id="kkemm"></div></center>
K9 通用版 博客版 論壇版 地方門戶版 企業版 |   企業(ASP) 分類 使用 分享 疑問 模板 建議 評論 錯誤 水坊
+新建主題 [Ajax]
填寫帳號密碼即可完成注冊
+新建話題 最新回復排序 最新主題排序 精華帖子

將下拉列表綁定欄目(原創)

1Next >

killhook 發表于:13-06-18 23:36 [添加收藏] 樓主 [回復] #Top#
killhook 人氣: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 '-'
1.192.188.* 發表于:13-06-19 14:46 沙發 [回復] #Top#
KingCMS官方網站網友
king cms 的留言板模塊怎么用啊
xue0666 發表于:13-06-21 08:42 4樓 [回復] #Top#
xue0666 人氣:41 積分:431 金幣:11552
不錯,
農村娃 發表于: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
天書,天書,這一定是傳說中的天道傳書!
zhyc 發表于:18-03-06 22:57 9樓 [回復] #Top#
zhyc 人氣:8 積分:341 金幣:1231
mark

1Next >

發表回復

帳號 匿名發布 審核后可見 [加載完整在線編輯器]
內容
驗證碼
KingCMS 內容管理系統

關于我們 聯系我們 廣告報價 付款方式 站點導航

Copyright © 2004-2015 Focuznet All rights reserved.

粵ICP備08008106號

北京快三车路线图
<optgroup id="kkemm"><object id="kkemm"></object></optgroup>
<optgroup id="kkemm"><small id="kkemm"></small></optgroup>
<xmp id="kkemm"><menu id="kkemm"></menu>
<center id="kkemm"></center>
<center id="kkemm"><div id="kkemm"></div></center>
<optgroup id="kkemm"><object id="kkemm"></object></optgroup>
<optgroup id="kkemm"><small id="kkemm"></small></optgroup>
<xmp id="kkemm"><menu id="kkemm"></menu>
<center id="kkemm"></center>
<center id="kkemm"><div id="kkemm"></div></center>