phpcms在添加內(nèi)容時(shí),有時(shí)添加的數(shù)據(jù)是其他表中數(shù)據(jù),比如我現(xiàn)在遇到的一個(gè)問題,A欄目是一個(gè)用來發(fā)布所有公司介紹的欄目,當(dāng)前臺(tái)的會(huì)員注冊被后臺(tái)管理員批準(zhǔn)可以進(jìn)入后臺(tái)發(fā)布找到A欄目發(fā)布的新聞資訊,這時(shí)就不能在A欄目中修改,因?yàn)檫@個(gè)新聞資訊是一個(gè)動(dòng)態(tài)的,而是需要做一個(gè)B欄目,B欄目添加數(shù)據(jù)和普通欄目沒區(qū)別,但是現(xiàn)在需要將A欄目和B欄目關(guān)聯(lián)起來,其實(shí)就是兩個(gè)表關(guān)聯(lián)起來,說白了,就是通過主外鍵關(guān)聯(lián)起來 ,所以,在B欄目中發(fā)布新聞時(shí)要對應(yīng)發(fā)布的是哪家公司的新聞,這時(shí)就要在添加內(nèi)容的頁面的表單里加一個(gè)表單框用來選數(shù)據(jù)關(guān)聯(lián)起來(比如一個(gè) ),這時(shí)就要用到萬能字段,如果說為什么非要用萬能字段,可以參考發(fā)布內(nèi)容頁面添加相關(guān)文章的那個(gè)表單,它就是用的萬能字段,接下來,就是重點(diǎn)了
這是phpcms的提示,
{FIELD_VALUE}就是所謂的表單值,可以完全不去在意。這個(gè)提示主要看的是在萬能字段中設(shè)置自定義表單時(shí)name值如何寫,為什么name值是個(gè)數(shù)組info[自定義的字段名],因?yàn)檫@是在添加數(shù)據(jù)的時(shí)候一個(gè)$_POST把所有表單獲取之后用foreach遍歷組成sql語句添加到數(shù)據(jù)庫。這里只要明白name的規(guī)范就行,其他無所謂,然后就是真正的使用方法了,caches/caches_model/caches_data/content_form.class.php約460行,(這是出自網(wǎng)上一個(gè)高手的解說截取片斷),仔細(xì)一看,這個(gè)萬能字段的萬能處就是可以用函數(shù),{FUNC(函數(shù)名不要加括號~~{FIELD_VALUE})}或者{FUNC(函數(shù)名~~)},自定義函數(shù)的時(shí)候在 /phpcms/libs/functions/extention.func.php,所以,綜上所述,在設(shè)置萬能字段的表單時(shí)可以直接寫個(gè)函數(shù),然后再函數(shù)里面查詢數(shù)據(jù)做表單最后通過頁面輸出,實(shí)現(xiàn)A和B欄目的關(guān)聯(lián)。
function select_cat(){
$ceshi= pc_base::load_model('ceshi_model');
$rs=$ceshi->query("select * from v9_news ");
if($rs->num_rows>0){
$str= "
foreach($rs as $a){
$str=$str. "";
}
$str=$str."";
}
else
{
$str="";
}
return $str;
}
該函數(shù)是我自定義的,只需要在萬能字段添加時(shí),寫{FUNC(select_cat~~)}