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)
隨機閱讀
[建議]
支招!KINGCMS如何盈利?
(17-05-11)
[疑問]
我想問一下 為什么 laowang 發這些多關于K9的問題?
(14-07-23)
[疑問]
偽原創做到什么樣的程度百度才收錄呢?
(12-06-23)
[分享]
去掉kingcms php企業版頁面中的jquery.js代碼
(12-05-19)
[模板]
求一個大氣簡單的模板做一個人產品站!
(11-11-30)
|
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 >