如何不修改源码在Mantis的manage_user_page.php添加Org列
解决方案:无需修改Mantis源码新增用户Org列
核心思路:利用Mantis插件系统与原生事件钩子
Mantis自带完整的插件扩展机制,通过注册特定事件钩子,就能在不改动核心源码的前提下,实现用户管理页面的列新增与数据展示。
步骤1:创建插件结构
新建一个名为OrgColumnPlugin的插件目录,包含以下两个核心文件:
1.1 plugin.php(插件核心逻辑)
<?php class OrgColumnPlugin extends MantisPlugin { function register() { $this->name = '用户组织列插件'; $this->description = '在用户管理页面新增组织列'; $this->version = '1.0'; $this->author = '自定义作者名'; $this->contact = '自定义联系方式'; $this->url = ''; } function hooks() { return array( // 钩子:渲染用户列表的表头列 'EVENT_MANAGE_USER_COLUMNS' => 'add_org_column_header', // 钩子:渲染每行用户的Org数据 'EVENT_MANAGE_USER_ROW' => 'add_org_column_data', // 钩子:让用户查询语句包含Org字段 'EVENT_USER_GET_SELECT_COLUMNS' => 'add_org_select_column', ); } // 添加新列的表头 function add_org_column_header( $p_event ) { echo '<th>' . lang_get( 'org_field_label' ) . '</th>'; } // 填充每行的Org数据 function add_org_column_data( $p_event, $p_user_id ) { $t_user = user_get_row( $p_user_id ); $t_org = isset( $t_user['Org'] ) ? $t_user['Org'] : ''; echo '<td>' . htmlspecialchars( $t_org ) . '</td>'; } // 追加Org字段到用户查询语句 function add_org_select_column( $p_event ) { return ', Org'; } }
1.2 lang/strings_zh_CN.txt(中文语言包,可选)
如果需要中文显示表头,添加语言文件:
org_field_label = 所属组织
步骤2:安装启用插件
- 将
OrgColumnPlugin目录上传到Mantis的plugins目录下 - 登录管理员账号,进入管理 > 插件管理
- 找到“用户组织列插件”,点击启用即可
关键说明
- 用到的三个事件均为Mantis原生支持的钩子,完全无需修改核心源码:
EVENT_MANAGE_USER_COLUMNS:负责在用户列表表头插入新列EVENT_MANAGE_USER_ROW:为每个用户行填充你新增的Org字段数据EVENT_USER_GET_SELECT_COLUMNS:确保查询用户数据时包含自定义的Org列
- 数据直接读取你已添加的
mantis_user_table.Org字段,无需额外数据库操作
内容的提问来源于stack exchange,提问作者Sara Bourgogne
相关产品推荐
相关产品推荐

