本帖最后由 w3xiuling 于 2010-01-17 03:23 编辑
UCHOME后台自定义用户栏目增加多选项(复选框)配合原程序搜索
我需要这种,所以首先搜索了论坛,都没找到一个分享出来的,UCH的自定义用户栏目,说真的类型太少了,呵呵,就只有文本格式和下拉框式的,所以没有现成的,只有自己动手咯
我的效果图先给大家看看:
是这样的效果
操作如下:
第一步:在
admin/tpl/profilefield.htm
里面找到
<option value="select"$formtypearr[select]>列表框</option>
在其下面加一句
<option value="multi"$formtypearr[multi]>多选框</option>
说明一下这里的multi,因为我发现默认的UCH模板里面有定义这个而没有用到,所以呢,我就直接命名这个multi,这样又少了一步操作,这个名称自己命名了,然后还和有一步操作,也是在这个模板文件里面
<!--{eval
$_TPL['formtypes'] = array('text'=>'文本输入', 'select'=>'单选列表', 'multi'=>'多选列表');
}-->
这个相信大家都看得明白,该怎么加也一清二楚了
第二步:
找到
source/cp_profile.php
把- $setarr['field_'.$field] = getstr($_POST['field_'.$field], $value['maxsize'], 1, 1);
复制代码 这句话替换成- if($value['formtype'] == 'multi'){$value['maxsize'] = 500;
- $valuep = $_POST['field_'.$field];
- if(!is_array($valuep) || empty($valuep)) return false;
- $setarr['field_'.$field] = implode(',', $valuep);
- $setarr['field_'.$field] = getstr($setarr['field_'.$field], $value['maxsize'], 1, 1);
- }
- else{
- $setarr['field_'.$field] = getstr($_POST['field_'.$field], $value['maxsize'], 1, 1);
- }
复制代码 找到- if($value['formtype'] == 'text') {
- $value['formhtml'] = "<input type="text" name="field_$fieldid" value="".$space["field_$fieldid"]."" class="t_input">";
- }
复制代码 在其后面加上- elseif($value['formtype'] == 'multi'){
- $optionarr = explode("\n", $value['choice']);
- foreach ($optionarr as $ov) {
- $ov = trim($ov);
- if($ov) {
- $valuep = $space["field_$fieldid"];
- if(strpos($valuep, ',')){
- $values = explode(',', $valuep);
- $selectstr = ($values && in_array($ov, $values)) ? 'checked' : '';
- }
- $name = "field_$fieldid"."[]";
- $value['formhtml'] .="<input type="checkbox" name="$name" value="$ov"$selectstr> $ov";
- }
- }
- }
复制代码 好了,操作完成
这过程中不设计到改搜索的,搜索还是就让它以下拉框的形式显示
效果是这样的
修改之后别忘记更新缓存了,再看效果
有什么问题,留言说明!
刚开始动UCH,希望大家多多指点
这样下去,大家想要什么多行输入框也就简单了
二楼的附件和这个一样的,随便下载哪个都OK
现在加上后台用户管理效果,这个功能就完整了,放心用吧
后台管理会员效果图:
|