以下是详细的设置步骤:
1、在管理员后台—用户—用户栏目-栏目列表里,点击[自定义字段1]最后的编辑
在打开的页面里:做如下设置
栏目名称:昵称
栏目介绍:请输入昵称,一经注册不允许修改
表单类型:单行文本框
是否启用:是
提交后不可修改:是
是否必填:是
是否在注册页面显示:是
是否在名片中显示:是
其它项目默认:点击提交保存。
换个浏览器打开注册页,验证下是否显示昵称项了。
2、打开source\language\lang_message.php,改完后提交至服务器
加入:
- <span style="font-family: Tahoma, Helvetica, SimSun, sans-serif; ">'profile_nickname_tooshort' => '抱歉,您输入的昵称小于 3 个字符,请输入一个较长的用户名',</span>
- <span style="font-family: Tahoma, Helvetica, SimSun, sans-serif; ">'profile_nickname_toolong' => '抱歉,您输入的昵称超过 15 个字符,请输入一个较短的用户名',</span>
- <span style="font-family: Tahoma, Helvetica, SimSun, sans-serif; ">'profile_nickname_duplicate' => '该昵称已被注册',</span>
复制代码
3、打开source\module\forum\forum_ajax.php,改完后提交至服务器
- 在跟if($_GET['action'] == 'checkusername')平级的if/else分支中,加入:
- elseif ($_GET['action'] == 'checknickname') {
- $nickname = trim($_GET['nickname']);
- $nicknamelen = dstrlen($nickname);
- if($nicknamelen < 3) {
- showmessage('profile_nickname_tooshort', '', array(), array('handle' => false));
- } elseif($nicknamelen > 15) {
- showmessage('profile_nickname_toolong', '', array(), array('handle' => false));
- }
- if(C::t('common_member_profile')->count_by_field('field1', $nickname) == 0) {
- //showmessage('<img src="'.$_G['style']['imgdir'].'/check_right.gif" width="13" height="13">', '', array(), array('msgtype' => 3));
- } else {
- showmessage('register_check_found', '', array(), array('handle' => false));
- }
- }
复制代码
4、打开static\js\register.js,改完后提交至服务器
- 加入一个函数:
- function checknickname(id) {
- errormessage(id);
- var username = trim($(id).value);
- if($('tip_' + id).parentNode.className.match(/ p_right/) && (username == '' || username == lastusername)) {
- return;
- } else {
- lastusername = username;
- }
- if(username.match(/<|"/ig)) {
- errormessage(id, '昵称包含敏感字符');
- return;
- }
- var unlen = username.replace(/[^\x00-\xff]/g, "**").length;
- if(unlen < 3 || unlen > 15) {
- errormessage(id, unlen < 3 ? '昵称不得小于 3 个字符' : '昵称不得超过 15 个字符');
- return;
- }
- var x = new Ajax();
- $('tip_' + id).parentNode.className = $('tip_' + id).parentNode.className.replace(/ p_right/, '');
- x.get('forum.php?mod=ajax&inajax=yes&infloat=register&handlekey=register&ajaxmenu=1&action=checknickname&nickname=' + (BROWSER.ie && document.charset == 'utf-8' ? encodeURIComponent(username) : username.replace(/%/g, '%25').replace(/#/g, '%23')), function(s) {
- errormessage(id, s);
- });
- }
- 在addFormEvent这个函数里,找到
- formNode[stmp[0]].onblur = function () {
- checkusername(formNode[stmp[0]].id);
- };
- 在后面加入:
- formNode[8].onblur = function () {
- checknickname(formNode[8].id);
- };
复制代码
第二个问题:帖子列表页显示昵称
1、打开source\module\forum\forum_forumdisplay.php
查找- foreach($threadlist as $thread) {
复制代码
在下一行加入
- <span style="font-family: Tahoma, Helvetica, SimSun, sans-serif; ">$thread['author_profile'] = C::t('common_member_profile')->fetch($thread['authorid']);</span>
- <span style="font-family: Tahoma, Helvetica, SimSun, sans-serif; ">$lastpostuser = C::t('common_member')->fetch_by_username($thread['lastposter']);</span>
- <span style="font-family: Tahoma, Helvetica, SimSun, sans-serif; ">$thread['lastposter_profile'] = C::t('common_member_profile')->fetch($lastpostuser['uid']);</span>
复制代码 2、打开template\default\forum\forumdisplay_list.htm
如果使用其他模板,请替换default为实际模板的路径
查找
替换成- $thread[author_profile]['field1']
复制代码
查找
替换成- $thread[lastposter_profile]['field1']
复制代码 到这里,注册的时候输入昵称后可以提示昵称是否被占用了。
但是会有个问题,如果还继续点提交注册的话,还是可以注册成功的。。。。。
|