站长学院
CMS建站教程 SEO优化攻略
来源:齐鲁建站 栏目:开发教程 阅读: 日期: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;
}