这两天初接触 ECShop 的二次开发,网站改呀改呀,从注册开始换脸~
产品经理要求注册时用手机号注册,手机号即为用户名,输入密码及确认密码后需要多一步:手机验证码。注册成功后,用户的手机号 mobile_phone 字段要填写上这个用户名,同时是验证过的状态。
目标页面是这样的,接下来就是朝着这个样子努力~:

clipboard.png

1、注册页面需要将下面的砍掉,如下图:

clipboard.png
这几项可以在后台管理中点 × ,也可以直接修改数据库,我对这个框架不熟悉,后台功能太强大没摸透就直接修改了数据库~
图(1):后台设置不显示

clipboard.png
图(2):修改数据库

clipboard.png

2、此刻再刷新页面,看到的估计是这个样子(我已经换了模板,样式可能不太一样,不过表单项应该还是这么几项)~

clipboard.png

虽然改进了很多,但是我们不需要 email 和 密码强度 这两项,没办法,改模板去掉吧~
我们先来观察注册页面浏览器地址栏的url,我的是这样的(前面的域名是自己配的,关系不大):

clipboard.png

需要更加注意的是后面的这一段,user.php?act=register. 程序猿or程序媛都懂得,找到 urser.php 文件,直接去根目录下就能找到。act=register 就找到 $action == 'register' 的地方,再找这个处理要渲染的是哪个模板,就是 $this->display('user_passport.dwt'); 很明显了,user_passport.dwt 就是我们要找的模板。

接下来就需要找模板了,如果你没有换过模板的话那就是 default ,换过之后麻烦点也绝对是可以修改的。首先去后台查看你现在所使用的模板,步骤如下:

clipboard.png
自己应该知道当前用的是哪一套模板,以及是哪个文件夹~ 也有很白痴的办法知道模板的路径,在模板上通过浏览器审查元素,就可以看到路径了~ (我是雷锋~)

clipboard.png

同志们,现在就很容易了吧,模板大家应该都知道是放在了 themes 目录下的,更容易就能找到上面的那个 default_old 目录~

clipboard.png
打开目录找到目标:user_passport.dwt 文件,并找到里面的注册部分的页面,去掉不该用的东西

clipboard.png

现在看到的效果应该接近理想~

clipboard.png

接下来就要添加那个手机验证码的输入框了,照着上面的三个框可以模仿一个出来,如下:

              <tr>
                <td align="right">{$lang.mobile_captcha}</td>
                <td>
                <input name="mobile_captcha" type="text" id="mobile_captcha" class="inputBg inputBg1" />
                  <span style="color:#FF0000" id="conform_password_notice"> *</span>
                </td>
              </tr>

上面的标签文字是仿照原模板写的,{$lang.mobile_captcha},其实最直接的就是直接写文字 “手机验证码”,就可以了~ 如果非要追求用 $lang 这样写的话,你会发现刷新页面,这个文字是出不来的,为什么呢?因为你没有配置啊,$lang 里面没有 mobile_captcha 这个属性变量。
找到配置文件:languages/zh_cn/user.php
找到注册部分的配置代码段,加入你想要的 mobile_captcha 属性就可以了~ (现在想真的没必要加这个,直接在模板中写汉字就好了)

clipboard.png

现在刷新看,页面已经完美了~ (当然样式可能还需要再调整,样式这些都不是问题;验证码的按钮以后稍后再加)

clipboard.png

3、页面出来了,填写完之后就要提交表单了,接下来介绍后台数据处理
在 user.php 文件中找到 注册会员处理部分 即 $action = 'act_register' 部分。可以自行把不需要的字段注释或删除,把缺少的部分加上~ 没必要的验证也去掉,再贴一张图(这只是修改的一部分,还有其他也需要修改的地方)。。

clipboard.png

我最想要记录的是下面的部分,怎么把 用户的手机号填写上,并设为已经验证通过的状态
(1)数据库里目前没有手机号是否通过验证的字段标识,需要另加字段,如 is_mobile ,sql 语句附上:ALTER TABLE ecs_users ADD is_mobile TINYINT( 3 ) NOT NULL DEFAULT '0' COMMENT '是否通过手机验证' AFTER mobile_phone;
表中已有的 is_validated 是表示邮箱是否通过验证的状态的
(2)找到所使用的处理文件 .../includes/lib_passport.php 文件,找到使用的 register 函数,根据自己的需要去掉邮箱的验证部分
(3)找到 .../includes/modules/integrates/integrate.php 文件,找到使用的 add_user 函数,同样根据自己的需要去掉邮箱的验证部分,现在最重要的是把 手机号同时填写上,并且 is_mobile = 1; 很简单仿照他们的写法,拷一份如下

clipboard.png

本以为这样就大功告成了,熟不知这个函数里面不认识那俩字段,field_mobile_phone, field_is_mobile;那把这俩字段加上吧,在 .../includes/modules/integrates/ecshop.php 中,在构造函数中添加这俩字段:

clipboard.png

注册试一下吧~ 我这里已经没问题了~ 数据库里的数据已经对了


taotao23569
30 声望0 粉丝

引用和评论

0 条评论