PHPCMS的万能字段

phpcms在添加内容时,有时添加的数据是其他表中数据,比如我现在遇到的一个问题,A栏目是一个用来发布所有公司介绍的栏目,当前台的会员注册被后台管理员批准可以

phpcms在添加内容时,有时添加的数据是其他表中数据,比如我现在遇到的一个问题,A栏目是一个用来发布所有公司介绍的栏目,当前台的会员注册被后台管理员批准可以进入后台发布找到A栏目发布的新闻资讯,这时就不能在A栏目中修改,因为这个新闻资讯是一个动态的,而是需要做一个B栏目,B栏目添加数据和普通栏目没区别,但是现在需要将A栏目和B栏目关联起来,其实就是两个表关联起来,说白了,就是通过主外键关联起来 ,所以,在B栏目中发布新闻时要对应发布的是哪家公司的新闻,这时就要在添加内容的页面的表单里加一个表单框用来选数据关联起来(比如一个<select><option value="公司id">每个公司名称</option></select> ),这时就要用到万能字段,如果说为什么非要用万能字段,可以参考发布内容页面添加相关文章的那个表单,它就是用的万能字段,接下来,就是重点了

 

这是phpcms的提示,
{FIELD_VALUE}就是所谓的表单值,可以完全不去在意。这个提示主要看的是在万能字段中设置自定义表单时name值如何写,为什么name值是个数组info[自定义的字段名],因为这是在添加数据的时候一个$_POST把所有表单获取之后用foreach遍历组成sql语句添加到数据库。这里只要明白name的规范就行,其他无所谓,然后就是真正的使用方法了,caches/caches_model/caches_data/content_form.class.php约460行,(这是出自网上一个高手的解说截取片断),仔细一看,这个万能字段的万能处就是可以用函数,{FUNC(函数名不要加括号~~{FIELD_VALUE})}或者{FUNC(函数名~~)},自定义函数的时候在 /phpcms/libs/functions/extention.func.php,所以,综上所述,在设置万能字段的表单时可以直接写个函数,然后再函数里面查询数据做表单最后通过页面输出,实现A和B栏目的关联。
 

function select_school()
{
    $model = pc_base::load_model('school_model');
    $data = $model->select();
    if ($data) {
        $str = "<select  name='info[school_id]'  id='nid'><option value='0'>请选择要发布的学校</option>";
        foreach ($data as $a) {
            $str = $str . "<option value='" . $a['id'] . "'>" . $a['name'] . "</option>";
        }
        $str = $str . "</select>";
    } else {
        $str = "<select  name='info[school_id]' id='id'></select>";
    }
    return $str;
}

 

该函数是我自定义的,只需要在万能字段添加时,写 

{FUNC(select_school~~)}