15621857753

phpcmsV9自定义box类型输出选项名称标签写法

来源:齐鲁建站 栏目:开发教程 阅读: 日期:2022-01-06

本文介绍了phpcmsV9自定义box类型输出选项名称标签写法,这是一个冷门但是特别有用的方法,小编为此研究了半天才找到答案,记录于此,分享给大家。

一、业务场景

搭建了个出售类的网站,要用到筛选功能,PHPCMS可以使用视频模型快速开发这个功能

使用筛选功能时,就要用到box这个标签,格式要求是:选项值|选项名称

里面还可以选择是输出选项值,还是输出选项名称

假如只要筛选功能,不在列表页调用输出选项名称,默认功能是完全够用的

但是要在列表页使用这个输出选项名称,这个时候会发现使用{$r['fenlei']}不起使用了

二、解决办法 

其实很简单,不要使用{$r['fenlei']},要改为

{box('fenlei',$r[fenlei],$modelid)}

如果不起使用,在phpcms\libs\functions\extention.func.php内添加下面的box函数

/**
 * 根据box类型字段获取显示名称
 * @param $field 字段名称
 * @param $value 字段值
 * @param $modelid 字段所在模型id
 */
function box($field, $value, $modelid='') {
        $fields = getcache('model_field_'.$modelid,'model');
        extract(string2array($fields[$field]['setting']));
        $options = explode("\n",$fields[$field]['options']);
        foreach($options as $_k) {
                $v = explode("|",$_k);
                $k = trim($v[1]);
                $option[$k] = $v[0];
        }
        $string = '';
        switch($fields[$field]['boxtype']) {
                        case 'radio':
                                $string = $option[$value];
                        break;
 
                        case 'checkbox':
                                $value_arr = explode(',',$value);
                                foreach($value_arr as $_v) {
                                        if($_v) $string .= $option[$_v].' 、';
                                }
                        break;
 
                        case 'select':
                                $string = $option[$value];
                        break;
 
                        case 'multiple':
                                $value_arr = explode(',',$value);
                                foreach($value_arr as $_v) {
                                        if($_v) $string .= $option[$_v].' 、';
                                }
                        break;
                }
                        return $string;
}

展开