http://bbs.phpcms.cn/thread-868750-1-1.htmljavascript
http://bbs.phpcms.cn/thread-869106-1-1.html
這是高級用法的說明.
先來對萬能字段作一個簡單的修改.
讓萬能字段能進進簡單的判斷,
之後的技巧都將基於上面教程中的高級用法進行;
/phpcms/modules/content/fields/omnipotent/form.inc.php
這是萬能字段的類方件.當更新緩存的時候會讀這裏的文件寫到緩存,而後使用的時候再從緩存裏讀取;
因此咱們要修改就改這裏!改完後更新緩存!php
function omnipotent($field, $value, $fieldinfo) { extract($fieldinfo); $formtext = str_replace('{FIELD_VALUE}',$value,$formtext); $formtext = str_replace('{MODELID}',$this->modelid,$formtext); preg_match_all('/{FUNC\((.*)\)}/',$formtext,$_match); foreach($_match[1] as $key=>$match_func) { $string = ''; $params = explode('~~',$match_func); $user_func = $params[0]; $string = $user_func($params[1]); $formtext = str_replace($_match[0][$key],$string,$formtext); } preg_match_all('/{if\((.*)\)}/',$formtext,$_match); foreach($_match[1] as $key=>$match_func) { $string = ''; $params = explode(',',$match_func); $str = $params[0]; if($str){ $string = $params[1]; }else{ $string = $params[2]?$params[2]:''; } $formtext = str_replace($_match[0][$key],$string,$formtext); } $id = $this->id ? $this->id : 0; $formtext = str_replace('{ID}',$id,$formtext); $errortips = $this->fields[$field]['errortips']; if($errortips) $this->formValidator .= '$("#'.$field.'").formValidator({onshow:"",onfocus:"'.$errortips.'"}).inputValidator({min:'.$minlength.',max:'.$maxlength.',onerror:"'.$errortips.'"});'; if($errortips) $this->formValidator .= '$("#'.$field.'").formValidator({onshow:"'.$errortips.'",onfocus:"'.$errortips.'"}).inputValidator({min:1,onerror:"'.$errortips.'"});'; return $formtext; }
改過了文件以後.(更新緩存)
萬能字段就多了一個語法
{if(條件,值1,值2)}
這個判斷用來幹嗎?
萬能字段.特點就是能夠放入別的字段.
一般我都把萬能字段作成選項.選中就顯示附加字段內容.
但萬能字段自己沒有判斷的語法,用JS麼?增長內容的時候,字段值 爲空,
JS判斷就會出錯;
因此就要這麼一個簡單的判斷語法了!
使用方法例:css
<input type="radio" id="external1" name="info[external]" value="1" {if({FIELD_VALUE},checked,)}/>啓用 <input type="radio" id="external0" name="info[external]" value="0" {if({FIELD_VALUE},,checked)}/>關閉 <div style="width:80%; [color=Red]{if({FIELD_VALUE}, ,display:none;)}[/color] "id="external"> 接口地址{userapi} </div> <script type="text/javascript"> $(document).ready(function(){ $("#external1").click(function(){ $("#external").css("display","block"); }); $("#external0").click(function(){ $("#external").css("display","none"); }); }); </script>
注意這裏面的 , 逗句的用法.(英文半角符號)
用判斷配合JS就能夠實現選中後再顯示附加字段!
第一個用法完成.請等待更新!html
這是我以前一直想作的事!
調用別的表裏面的一個字段的值.
如今給你們分享
由於個人系統沒什麼內容.就調用自定義表單裏的字段吧
我要調用的表名爲 form_wei_attention 字段名爲 name 條件是當前投稿用戶,後臺則不限條件
首先增長萬能字段,我這裏把他叫
字段名 gname
字段別名 公衆號名稱
表單內容 {FUNC(wei_cal_name~~{FIELD_VALUE},gname)}
這裏的寫法,多了一個 , 逗號和一個gname 這是爲了傳遞當前字段名稱,這樣的話,咱們更改當前字段名也不用改方法
保存在主表,(怎麼存在主表,見上一樓)
其它隨意,
java
而後去自定義函數文件中增長方法api
//萬能字段使用 function wei_cal_name($field){ $fields = explode(",", $field); $userid = param::get_cookie('_userid'); //獲取當前用戶ID if ($userid)$where = array('userid'=>$userid); //設置調用條件爲當前用戶,後臺增長的時候,此條件爲空,就會調用全部的內容 $db = pc_base::load_model('sitemodel_field_model'); $db->change_table('form_wei_attention'); //要調用的表名 $data = $db->select($where,'name'); //這是要調用的字段名 $srt = "<select name=\"info[{$fields[1]}]\" id=\"{$fields[1]}\" >"; foreach ($data as $value) { if ($fields[0] == $value['name']) { $srt.="<option value='{$value['name']}' selected = 'selected'>{$value['name']}</option>"; }else { $srt.="<option value='{$value['name']}'>{$value['name']}</option>"; } } $srt.="</select>"; return $srt; }
而後去後臺增長一個信息,
你就會看到這個字段變成了一個下拉選擇框.裏面是全部的信息列表...
若是你以爲多了,那就本身設置一下條件吧!緩存